diff --git a/build.gradle.kts b/build.gradle.kts index bac4a8db..48d8b77a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,6 @@ plugins { alias(idofrontLibs.plugins.mia.kotlin.jvm) alias(idofrontLibs.plugins.kotlinx.serialization) alias(idofrontLibs.plugins.mia.papermc) - alias(idofrontLibs.plugins.mia.nms) alias(idofrontLibs.plugins.mia.copyjar) alias(idofrontLibs.plugins.mia.publication) alias(idofrontLibs.plugins.mia.testing) @@ -59,7 +58,7 @@ dependencies { api(project(":mobzy-features")) api(project(":mobzy-spawning")) api(project(":mobzy-core")) - api(project(":mobzy-modelengine")) + api(project(":mobzy-plugin-integrations")) // Testing testImplementation(idofrontLibs.kotlin.statistics) diff --git a/mobzy-pathfinding/build.gradle.kts b/mobzy-pathfinding/build.gradle.kts index f7ff9111..4a66fdf7 100644 --- a/mobzy-pathfinding/build.gradle.kts +++ b/mobzy-pathfinding/build.gradle.kts @@ -10,5 +10,5 @@ dependencies { compileOnly(idofrontLibs.kotlinx.serialization.json) compileOnly(project(":mobzy-core")) - compileOnly(project(":mobzy-modelengine")) + compileOnly(project(":mobzy-plugin-integrations")) } diff --git a/mobzy-modelengine/build.gradle.kts b/mobzy-plugin-integrations/build.gradle.kts similarity index 79% rename from mobzy-modelengine/build.gradle.kts rename to mobzy-plugin-integrations/build.gradle.kts index 26167196..a56ffc67 100644 --- a/mobzy-modelengine/build.gradle.kts +++ b/mobzy-plugin-integrations/build.gradle.kts @@ -3,11 +3,16 @@ plugins { id(idofrontLibs.plugins.mia.papermc.get().pluginId) id(idofrontLibs.plugins.mia.publication.get().pluginId) id(idofrontLibs.plugins.kotlinx.serialization.get().pluginId) + id(idofrontLibs.plugins.mia.nms.get().pluginId) } dependencies { - compileOnly(idofrontLibs.kotlinx.serialization.json) + // Plugins + compileOnly(idofrontLibs.minecraft.plugin.mythic.dist) compileOnly(idofrontLibs.minecraft.plugin.modelengine) + + // Other deps + compileOnly(idofrontLibs.kotlinx.serialization.json) compileOnly(idofrontLibs.minecraft.mccoroutine) compileOnly(project(":mobzy-core")) diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/Helpers.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/Helpers.kt similarity index 95% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/Helpers.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/Helpers.kt index db34868d..24b0ca50 100644 --- a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/Helpers.kt +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/Helpers.kt @@ -8,7 +8,6 @@ import com.ticxo.modelengine.api.model.ModeledEntity import com.ticxo.modelengine.api.model.bone.behavior.BoneBehavior import com.ticxo.modelengine.api.model.bone.manager.BehaviorManager import com.ticxo.modelengine.api.model.bone.manager.MountManager -import com.ticxo.modelengine.api.model.bone.type.Mount import java.util.* import kotlin.jvm.optionals.getOrNull diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/MEGMobQuery.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/MEGMobQuery.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/MEGMobQuery.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/MEGMobQuery.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/ModelEngineSupport.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/ModelEngineSupport.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/ModelEngineSupport.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/ModelEngineSupport.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/AnimationController.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/AnimationController.kt similarity index 95% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/AnimationController.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/AnimationController.kt index d4a07bbd..81714e7c 100644 --- a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/AnimationController.kt +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/AnimationController.kt @@ -1,6 +1,5 @@ package com.mineinabyss.mobzy.modelengine.animation -import com.mineinabyss.idofront.plugin.Services import com.mineinabyss.idofront.typealiases.BukkitEntity import com.mineinabyss.mobzy.modelengine.mobzyModelEngine diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelEngineAnimationController.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelEngineAnimationController.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelEngineAnimationController.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelEngineAnimationController.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelInteractionListener.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelInteractionListener.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelInteractionListener.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/animation/ModelInteractionListener.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/ModelEngineWorldListener.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/ModelEngineWorldListener.kt similarity index 98% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/ModelEngineWorldListener.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/ModelEngineWorldListener.kt index f26f3fc7..6974890d 100644 --- a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/ModelEngineWorldListener.kt +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/ModelEngineWorldListener.kt @@ -11,7 +11,6 @@ import org.bukkit.event.EventHandler import org.bukkit.event.EventPriority import org.bukkit.event.Listener import org.bukkit.event.entity.CreatureSpawnEvent -import org.bukkit.event.entity.EntitySpawnEvent import org.bukkit.event.world.EntitiesLoadEvent class ModelEngineWorldListener : Listener { diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModel.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModel.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModel.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModel.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModelSystem.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModelSystem.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModelSystem.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/intializers/SetModelEngineModelSystem.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/nametag/ModelEngineNameTagListener.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/nametag/ModelEngineNameTagListener.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/nametag/ModelEngineNameTagListener.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/nametag/ModelEngineNameTagListener.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/ModelEngineRidingListener.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/ModelEngineRidingListener.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/ModelEngineRidingListener.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/ModelEngineRidingListener.kt diff --git a/mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/Rideable.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/Rideable.kt similarity index 100% rename from mobzy-modelengine/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/Rideable.kt rename to mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/modelengine/riding/Rideable.kt diff --git a/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/MythicMobsSupport.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/MythicMobsSupport.kt new file mode 100644 index 00000000..ccc6a904 --- /dev/null +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/MythicMobsSupport.kt @@ -0,0 +1,31 @@ +package com.mineinabyss.mobzy.mythicmobs + +import com.mineinabyss.geary.addons.dsl.GearyAddonWithDefault +import com.mineinabyss.geary.modules.geary +import com.mineinabyss.idofront.di.DI +import com.mineinabyss.idofront.plugin.listeners +import com.mineinabyss.mobzy.mobzy +import com.mineinabyss.mobzy.mythicmobs.actions.runMMSkillAction +import com.mineinabyss.mobzy.mythicmobs.items.MythicMobDropListener +import com.mineinabyss.mobzy.mythicmobs.spawning.mythicMobSpawner +import com.mineinabyss.mobzy.mythicmobs.spawning.setBoundingBoxFromMythicMob + +val mobzyMythicMobs: MythicMobsSupport? by DI.observe() + +interface MythicMobsSupport { + + companion object : GearyAddonWithDefault { + override fun default() = object : MythicMobsSupport { + } + + override fun MythicMobsSupport.install(): Unit = geary.run { + mobzy.plugin.listeners( +// ConvertToMythicMobListener(), TODO fix and bring back + MythicMobDropListener(), + ) + setBoundingBoxFromMythicMob() + runMMSkillAction() + mythicMobSpawner() + } + } +} diff --git a/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/actions/RunMythicMobsSkills.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/actions/RunMythicMobsSkills.kt new file mode 100644 index 00000000..54c54ba6 --- /dev/null +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/actions/RunMythicMobsSkills.kt @@ -0,0 +1,53 @@ +package com.mineinabyss.mobzy.mythicmobs.actions + +import com.google.common.collect.Lists +import com.mineinabyss.geary.modules.GearyModule +import com.mineinabyss.geary.serialization.serializers.InnerSerializer +import com.mineinabyss.geary.systems.builders.listener +import com.mineinabyss.geary.systems.query.ListenerQuery +import com.mineinabyss.idofront.typealiases.BukkitEntity +import io.lumine.mythic.api.adapters.AbstractEntity +import io.lumine.mythic.bukkit.BukkitAdapter +import io.lumine.mythic.bukkit.MythicBukkit +import io.lumine.mythic.core.skills.SkillMetadataImpl +import io.lumine.mythic.core.skills.SkillTriggers +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.builtins.serializer +import kotlin.jvm.optionals.getOrNull + +@Serializable(with = RunMythicMobsSkills.Serializer::class) +class RunMythicMobsSkills( + val keys: List, +) { + class Serializer : InnerSerializer, RunMythicMobsSkills>( + serialName = "geary:run_mythic_skills", + inner = ListSerializer(String.serializer()), + inverseTransform = { it.keys }, + transform = ::RunMythicMobsSkills + ) +} + +fun GearyModule.runMMSkillAction() = listener( + object : ListenerQuery() { + val bukkit by get() + val skill by source.get() + } +).exec { + skill.keys.forEach { + val line = "[ - $it ]" + val entity = BukkitAdapter.adapt(bukkit) + val caster = MythicBukkit.inst().skillManager.getCaster(entity) + val skill = MythicBukkit.inst().skillManager.getSkill(line).getOrNull() + val meta = SkillMetadataImpl( + SkillTriggers.API, + caster, + entity, + entity.location, + Lists.newArrayList(*arrayOf(entity)), + null, + 1.0f + ) + skill?.execute(meta) + } +} diff --git a/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/items/MythicMobDropListener.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/items/MythicMobDropListener.kt new file mode 100644 index 00000000..d66448fa --- /dev/null +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/items/MythicMobDropListener.kt @@ -0,0 +1,22 @@ +package com.mineinabyss.mobzy.mythicmobs.items + +import com.mineinabyss.geary.papermc.tracking.items.gearyItems +import com.mineinabyss.geary.papermc.tracking.items.helpers.GearyItemPrefabQuery.Companion.getKeys +import com.mineinabyss.geary.prefabs.PrefabKey +import io.lumine.mythic.bukkit.adapters.BukkitItemStack +import io.lumine.mythic.bukkit.events.MythicDropLoadEvent +import io.lumine.mythic.core.drops.droppables.VanillaItemDrop +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener + + +class MythicMobDropListener : Listener { + @EventHandler + fun MythicDropLoadEvent.onMythicDropLoad() { + if (dropName.lowercase() != "geary") return + val prefabKey = PrefabKey.of(container.line.split(" ")[1]) + if (prefabKey !in gearyItems.prefabs.getKeys()) return + + register(VanillaItemDrop(container.line, config, BukkitItemStack(gearyItems.createItem(prefabKey)))) + } +} diff --git a/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/AttemptSpawnMythicMob.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/AttemptSpawnMythicMob.kt new file mode 100644 index 00000000..0a8a17fa --- /dev/null +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/AttemptSpawnMythicMob.kt @@ -0,0 +1,25 @@ +package com.mineinabyss.mobzy.mythicmobs.spawning + +import com.mineinabyss.geary.modules.GearyModule +import com.mineinabyss.geary.papermc.tracking.entities.components.AttemptSpawn +import com.mineinabyss.geary.systems.builders.listener +import com.mineinabyss.geary.systems.query.ListenerQuery +import com.mineinabyss.idofront.typealiases.BukkitEntity +import io.lumine.mythic.api.mobs.entities.SpawnReason +import io.lumine.mythic.bukkit.BukkitAdapter +import io.lumine.mythic.bukkit.MythicBukkit +import kotlin.jvm.optionals.getOrNull + +fun GearyModule.mythicMobSpawner() = listener( + object : ListenerQuery() { + val mobType by get() + val attemptSpawn by event.get() + override fun ensure() = this { not { has() } } + } +).exec { + val mythicMob = MythicBukkit.inst().mobManager.getMythicMob(mobType.id).getOrNull() ?: return@exec + mythicMob.spawn(BukkitAdapter.adapt(attemptSpawn.location), 1.0, SpawnReason.NATURAL) { mob -> + entity.set(mob) + entity.set(mythicMob) + } +} diff --git a/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/ConvertToMythicMobListener.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/ConvertToMythicMobListener.kt new file mode 100644 index 00000000..7674d75a --- /dev/null +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/ConvertToMythicMobListener.kt @@ -0,0 +1,39 @@ +package com.mineinabyss.mobzy.mythicmobs.spawning + +import com.mineinabyss.geary.papermc.MobTypeConversion +import com.mineinabyss.geary.papermc.gearyPaper +import com.mineinabyss.geary.papermc.tracking.entities.events.GearyEntityAddToWorldEvent +import com.mineinabyss.geary.papermc.tracking.entities.systems.updatemobtype.UpdateMob +import io.lumine.mythic.api.mobs.MythicMob +import io.lumine.mythic.bukkit.MythicBukkit +import io.lumine.mythic.core.constants.MobKeys +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener + +class ConvertToMythicMobListener : Listener { + @EventHandler + fun GearyEntityAddToWorldEvent.onAdd() { + if (gearyPaper.config.mobTypeConversion == MobTypeConversion.IGNORE) return + val mm = MythicBukkit.inst() + if (mm.mobManager == null) return + + // If MM already encoded or loaded, we let it handle things itself + if (entity.persistentDataContainer.has(MobKeys.TYPE)) return + if (mm.mobManager.isActiveMob(entity.uniqueId)) return + + if (!gearyEntity.has()) return + if (gearyEntity.has()) return + + when (gearyPaper.config.mobTypeConversion) { + MobTypeConversion.MIGRATE -> { + UpdateMob.scheduleRecreation(entity, gearyEntity) + } + + MobTypeConversion.REMOVE -> { + UpdateMob.scheduleRemove(entity) + } + + MobTypeConversion.IGNORE -> Unit + } + } +} diff --git a/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/SetBoundingBoxFromMythicMob.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/SetBoundingBoxFromMythicMob.kt new file mode 100644 index 00000000..bf97d146 --- /dev/null +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/SetBoundingBoxFromMythicMob.kt @@ -0,0 +1,29 @@ +package com.mineinabyss.mobzy.mythicmobs.spawning + +import com.mineinabyss.geary.components.relations.NoInherit +import com.mineinabyss.geary.modules.GearyModule +import com.mineinabyss.geary.systems.builders.listener +import com.mineinabyss.geary.systems.query.ListenerQuery +import com.mineinabyss.idofront.nms.aliases.NMSEntityType +import io.lumine.mythic.bukkit.MythicBukkit +import org.bukkit.NamespacedKey +import org.bukkit.util.BoundingBox +import kotlin.jvm.optionals.getOrNull + +fun GearyModule.setBoundingBoxFromMythicMob() = listener( + object : ListenerQuery() { + val mobType by get() + override fun ensure() = event.anySet(::mobType) + } +).exec { + val mythicMob = MythicBukkit.inst().mobManager.getMythicMob(mobType.id).getOrNull() ?: return@exec + +// val megModel = mythicMob.model.config.getString("Id") + val vanillaType = NamespacedKey.minecraft(mythicMob.entityType.name.lowercase()) + + val nmsType = NMSEntityType.byString(vanillaType.toString()) + .orElseGet { error("An entity type with key $vanillaType was not found.") } + + entity.addRelation() +// entity.set(BoundingBoxHelpers.getForEntityType(nmsType)) +} diff --git a/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/SetMythicMob.kt b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/SetMythicMob.kt new file mode 100644 index 00000000..5a4fc9c5 --- /dev/null +++ b/mobzy-plugin-integrations/src/main/kotlin/com/mineinabyss/mobzy/mythicmobs/spawning/SetMythicMob.kt @@ -0,0 +1,9 @@ +package com.mineinabyss.mobzy.mythicmobs.spawning + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@JvmInline +@Serializable +@SerialName("mobzy:set.mythic_mob") +value class SetMythicMob(val id: String) diff --git a/settings.gradle.kts b/settings.gradle.kts index acc3812d..e6e47724 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -38,7 +38,7 @@ dependencyResolutionManagement { include( "mobzy-core", "mobzy-features", - "mobzy-modelengine", + "mobzy-plugin-integrations", "mobzy-pathfinding", "mobzy-spawning", ) diff --git a/src/main/kotlin/com/mineinabyss/mobzy/MobzyPlugin.kt b/src/main/kotlin/com/mineinabyss/mobzy/MobzyPlugin.kt index e3cec23d..60e3a7ad 100644 --- a/src/main/kotlin/com/mineinabyss/mobzy/MobzyPlugin.kt +++ b/src/main/kotlin/com/mineinabyss/mobzy/MobzyPlugin.kt @@ -24,6 +24,7 @@ import com.mineinabyss.mobzy.features.prevent.riding.PreventRidingSystem import com.mineinabyss.mobzy.features.sounds.OverrideMobSoundsBukkitListener import com.mineinabyss.mobzy.features.taming.TamingBukkitListener import com.mineinabyss.mobzy.modelengine.ModelEngineSupport +import com.mineinabyss.mobzy.mythicmobs.MythicMobsSupport import com.mineinabyss.mobzy.pathfinding.components.PathfinderComponent import com.mineinabyss.mobzy.spawning.MobzySpawnFeature import com.mineinabyss.mobzy.spawning.WorldGuardSpawnFlags @@ -46,14 +47,10 @@ class MobzyPlugin : JavaPlugin() { all() subClassesOf() } - - if (Plugins.isEnabled("ModelEngine")) { - install(ModelEngineSupport) - } } } - override fun onEnable() = actions { + override fun onEnable() = actions(mobzy.logger) { MobzyFeatureManager(this@MobzyPlugin).enable() MobzyCommands() @@ -68,14 +65,20 @@ class MobzyPlugin : JavaPlugin() { OverrideMobSoundsBukkitListener(), ) - geary.apply { - removeWhenFarAway() - } - geary { if (Plugins.isEnabled("ModelEngine")) { + mobzy.logger.s("ModelEngine detected, enabling support.") install(ModelEngineSupport) } + + if (Plugins.isEnabled("MythicMobs")) { + mobzy.logger.s("MythicMobs detected, enabling support.") + install(MythicMobsSupport) + } + + module.apply { + removeWhenFarAway() + } } } diff --git a/src/main/resources/paper-plugin.yml b/src/main/resources/paper-plugin.yml index 86da5b1e..c958269c 100644 --- a/src/main/resources/paper-plugin.yml +++ b/src/main/resources/paper-plugin.yml @@ -12,6 +12,10 @@ dependencies: required: true load: BEFORE join-classpath: true + MythicMobs: + required: false + load: BEFORE + join-classpath: true ModelEngine: required: false load: BEFORE