diff --git a/data/plugins/entity/mob/extension/extension.rb b/data/plugins/entity/mob/extension/extension.rb new file mode 100644 index 00000000..11e20c0d --- /dev/null +++ b/data/plugins/entity/mob/extension/extension.rb @@ -0,0 +1,20 @@ +require 'java' + +java_import 'org.apollo.game.model.entity.Mob' + +module MobExtension + MOB_EXTENSIONS = [] + + def self.register(extension) + fail 'Provided extension object is not a module' unless extension.is_a?(Module) + + new_mixins = extension.public_instance_methods + current_mixins = MOB_EXTENSIONS.map { |e| {e.to_s => e.public_instance_methods} } + + current_mixins.each do |ext, methods| + methods.each {|m| fail "Extension #{ext} already provides method #{m}" if new_mixins.include?(m) } + end + + Mob.include(extension) + end +end \ No newline at end of file diff --git a/data/plugins/entity/mob/extension/plugin.xml b/data/plugins/entity/mob/extension/plugin.xml new file mode 100644 index 00000000..e2c7d250 --- /dev/null +++ b/data/plugins/entity/mob/extension/plugin.xml @@ -0,0 +1,15 @@ + + + mob-extension + 0.1 + Mob Extensions + Adds support for extending Mobs with new functionality + + Gary Tierney + + + + + + + \ No newline at end of file