From 127a43e03265326fc5297a34d8573f98d8fbb759 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 28 Sep 2022 16:10:21 +0100 Subject: [PATCH] PR Improvements --- build.gradle.kts | 20 +----------- eco-core/core-plugin/build.gradle.kts | 1 + .../com/willfp/ecobosses/bosses/Bosses.kt | 17 +++++++--- .../com/willfp/ecobosses/bosses/EcoBoss.kt | 14 ++++---- .../lifecycle/CompatibilityListeners.kt | 16 ++++------ .../willfp/ecobosses/spawn/SpawnEggHandler.kt | 32 +++++++++++++++---- 6 files changed, 54 insertions(+), 46 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b2550d2..95d777c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,25 +31,9 @@ allprojects { maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") maven("https://repo.codemc.org/repository/nms/") maven("https://repo.codemc.org/repository/maven-public") - maven("https://oss.sonatype.org/content/repositories/snapshots") - maven("https://oss.sonatype.org/content/groups/public/") - maven("https://maven.enginehub.org/repo/") - maven("https://ci.ender.zone/plugin/repository/project/") - maven("https://ci.ender.zone/plugin/repository/everything/") - maven("https://repo.md-5.net/content/repositories/snapshots/") maven("https://repo.dmulloy2.net/nexus/repository/public/") maven("https://papermc.io/repo/repository/maven-public/") - maven("https://repo.maven.apache.org/maven2/") - maven("https://repo.dustplanet.de/artifactory/ext-release-local/") - maven("https://maven.seyfahni.de/repository/snapshots/") - maven("https://libraries.minecraft.net/") - maven("https://repo.spongepowered.org/maven/") - maven("https://org.kitteh.pastegg") - maven("https://repo.mikeprimm.com/") - maven("https://maven.sk89q.com/repo/") - maven("https://github.com/factions-site/repo/raw/public/") - maven("https://repo.extendedclip.com/content/repositories/placeholderapi/") - maven("https://mvn.lumine.io/repository/maven-public/") { metadataSources.mavenPom() } + maven("https://mvn.lumine.io/repository/maven-public/") } dependencies { @@ -59,8 +43,6 @@ allprojects { implementation("com.willfp:libreforge:3.105.0") implementation("org.joml:joml:1.10.4") - - compileOnly("com.ticxo.modelengine:api:R3.0.0") } java { diff --git a/eco-core/core-plugin/build.gradle.kts b/eco-core/core-plugin/build.gradle.kts index 865fa03..f476d26 100644 --- a/eco-core/core-plugin/build.gradle.kts +++ b/eco-core/core-plugin/build.gradle.kts @@ -7,4 +7,5 @@ dependencies { // Integrations compileOnly("com.github.lokka30:LevelledMobs:3.1.4") + compileOnly("com.ticxo.modelengine:api:R3.0.1") } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/Bosses.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/Bosses.kt index 401f3af..bde9fe1 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/Bosses.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/Bosses.kt @@ -7,14 +7,13 @@ import com.willfp.eco.core.config.ConfigType import com.willfp.eco.core.config.TransientConfig import com.willfp.eco.core.config.updating.ConfigUpdater import com.willfp.ecobosses.EcoBossesPlugin +import org.bukkit.entity.Entity import org.bukkit.entity.LivingEntity import java.io.File -import java.util.* +import java.util.UUID object Bosses { - /** - * Registered bosses. - */ + /** Registered bosses. */ private val BY_ID: BiMap = HashBiMap.create() /** @@ -123,4 +122,14 @@ object Bosses { operator fun get(entity: LivingEntity): LivingEcoBoss? { return get(entity.uniqueId) } + + /** If an entity is a boss. */ + val Entity?.isBoss: Boolean + get() { + if (this !is LivingEntity) { + return false + } + + return Bosses[this] != null + } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt index d072d13..e5e0df7 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt @@ -298,7 +298,7 @@ class EcoBoss( private val mob: TestableEntity = Entities.lookup(config.getString("mob")) - private val modelEngineID: String = config.getString("modelEngineID") + private val modelEngineID = config.getStringOrNull("modelEngineID") private val currentlyAlive = mutableMapOf() @@ -346,11 +346,11 @@ class EcoBoss( entityGoals.forEach { controller.addEntityGoal(it.priority, it.goal as EntityGoal) } } - if (modelEngineID.isNotBlank() && Bukkit.getPluginManager().isPluginEnabled("modelEngine")) { + if (modelEngineID != null && Bukkit.getPluginManager().isPluginEnabled("modelEngine")) { val model = ModelEngineAPI.createActiveModel(modelEngineID) if (model == null) { - plugin.logger.warning("Invalid modelEngineID for boss $id") + plugin.logger.warning("Invalid Model Engine ID for boss $id") } val modelled = ModelEngineAPI.createModeledEntity(mob) @@ -462,9 +462,9 @@ class EcoBoss( override fun toString(): String { return ( - "EcoBoss{" + - id + - "}" - ) + "EcoBoss{" + + id + + "}" + ) } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/lifecycle/CompatibilityListeners.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/lifecycle/CompatibilityListeners.kt index 9bf997f..407c651 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/lifecycle/CompatibilityListeners.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/lifecycle/CompatibilityListeners.kt @@ -1,8 +1,6 @@ package com.willfp.ecobosses.lifecycle -import com.willfp.ecobosses.bosses.Bosses -import org.bukkit.entity.Entity -import org.bukkit.entity.LivingEntity +import com.willfp.ecobosses.bosses.Bosses.isBoss import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.entity.EntityTransformEvent @@ -11,17 +9,17 @@ import org.bukkit.event.entity.SlimeSplitEvent class CompatibilityListeners : Listener { @EventHandler fun handle(event: SlimeSplitEvent) { - if (!this.isBoss(event.entity)) return + if (!event.entity.isBoss) { + return + } event.isCancelled = true } @EventHandler fun handle(event: EntityTransformEvent) { - if (!this.isBoss(event.entity)) return + if (!event.entity.isBoss) { + return + } event.isCancelled = true } - - private fun isBoss(entity: Entity): Boolean { - return Bosses[entity as? LivingEntity ?: return false] != null - } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/spawn/SpawnEggHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/spawn/SpawnEggHandler.kt index d54ba58..0b6ee13 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/spawn/SpawnEggHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/spawn/SpawnEggHandler.kt @@ -3,6 +3,7 @@ package com.willfp.ecobosses.spawn import com.willfp.ecobosses.EcoBossesPlugin import com.willfp.ecobosses.bosses.bossEgg import com.willfp.ecobosses.events.BossSpawnEvent +import com.willfp.libreforge.conditions.isMet import org.bukkit.Bukkit import org.bukkit.Location import org.bukkit.block.Container @@ -17,13 +18,20 @@ import org.bukkit.event.player.PlayerInteractEvent import org.bukkit.inventory.EquipmentSlot import org.bukkit.inventory.ItemStack -class SpawnEggHandler : Listener { +class SpawnEggHandler( + private val plugin: EcoBossesPlugin +) : Listener { @EventHandler( ignoreCancelled = true ) fun handle(event: PlayerInteractEvent) { - if (event.action != Action.RIGHT_CLICK_BLOCK) return - if (!this.handleSpawnEgg(event.item, event.clickedBlock?.location?.add(0.0, 1.5, 0.0), event.player)) return + if (event.action != Action.RIGHT_CLICK_BLOCK) { + return + } + + if (!this.handleSpawnEgg(event.item, event.clickedBlock?.location?.add(0.0, 1.5, 0.0), event.player)) { + return + } event.isCancelled = true event.setUseItemInHand(Event.Result.DENY) @@ -52,9 +60,9 @@ class SpawnEggHandler : Listener { // This is needed as the event must finish first, // Otherwise the dispenser/dropper thinks the item is already removed from this event. - EcoBossesPlugin.instance.scheduler.run { + plugin.scheduler.run { val item = dispenser.inventory.find { it?.isSimilar(event.item) == true } ?: return@run - item.amount -= 1 + item.amount-- dispenser.update() } } @@ -66,12 +74,22 @@ class SpawnEggHandler : Listener { ): Boolean { val boss = item?.bossEgg ?: return false - if (location == null || (player != null && !boss.spawnConditions.all { it.condition.isConditionMet(player, it.config) })) return false + if (location == null) { + return false + } + + if (player != null) { + if (!boss.spawnConditions.isMet(player)) { + return false + } + } val spawnEvent = BossSpawnEvent(boss, location, BossSpawnEvent.SpawnReason.EGG, player) Bukkit.getPluginManager().callEvent(spawnEvent) - if (spawnEvent.isCancelled) return false + if (spawnEvent.isCancelled) { + return false + } boss.spawn(location)