diff --git a/build.gradle b/build.gradle index dda4756..36599d8 100644 --- a/build.gradle +++ b/build.gradle @@ -29,6 +29,7 @@ allprojects { mavenCentral() maven { url 'https://jitpack.io' } maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } + maven { url 'https://papermc.io/repo/repository/maven-public/' } maven { url 'https://repo.codemc.org/repository/nms/' } } diff --git a/eco-core/core-paper/build.gradle b/eco-core/core-paper/build.gradle deleted file mode 100644 index 1bc9eec..0000000 --- a/eco-core/core-paper/build.gradle +++ /dev/null @@ -1,11 +0,0 @@ -group 'com.willfp' -version rootProject.version - -repositories { - maven { url 'https://papermc.io/repo/repository/maven-public/' } -} - -dependencies { - compileOnly project(":eco-core:core-plugin") - compileOnly 'io.papermc.paper:paper-api:1.17.1-R0.1-SNAPSHOT' -} \ No newline at end of file diff --git a/eco-core/core-paper/src/main/java/com/willfp/reforges/paper/PaperLoader.java b/eco-core/core-paper/src/main/java/com/willfp/reforges/paper/PaperLoader.java deleted file mode 100644 index fefe73c..0000000 --- a/eco-core/core-paper/src/main/java/com/willfp/reforges/paper/PaperLoader.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.willfp.reforges.paper; - -import com.willfp.reforges.ReforgesPlugin; - -public class PaperLoader { - static { - ReforgesPlugin plugin = ReforgesPlugin.getInstance(); - plugin.setPaperHandler(new EcoPaperHandler(plugin)); - } -} diff --git a/eco-core/core-paper/src/main/kotlin/com/willfp/reforges/paper/EcoPaperHandler.kt b/eco-core/core-paper/src/main/kotlin/com/willfp/reforges/paper/EcoPaperHandler.kt deleted file mode 100644 index d3a55bc..0000000 --- a/eco-core/core-paper/src/main/kotlin/com/willfp/reforges/paper/EcoPaperHandler.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.willfp.reforges.paper - -import com.willfp.reforges.ReforgesPlugin -import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer -import org.bukkit.inventory.ItemStack - -class EcoPaperHandler( - private val plugin: ReforgesPlugin -) : PaperHandler { - private val serializer = LegacyComponentSerializer.builder() - .hexColors() - .useUnusualXRepeatedCharacterHexFormat() - .character('§') - .build() - - override fun getDisplayName(itemStack: ItemStack): String { - return serializer.serialize(itemStack.displayName()) - } -} \ No newline at end of file diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index 9ea1a28..dbee654 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -2,6 +2,6 @@ group 'com.willfp' version rootProject.version dependencies { - compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:1.17.1-R0.1-SNAPSHOT' compileOnly 'com.github.MilkBowl:VaultAPI:1.7' } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java index 526aa66..47521d5 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java @@ -1,7 +1,6 @@ package com.willfp.reforges; import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.Prerequisite; import com.willfp.eco.core.command.impl.PluginCommand; import com.willfp.eco.core.display.DisplayModule; import com.willfp.eco.core.items.Items; @@ -12,7 +11,6 @@ import com.willfp.reforges.config.TargetYml; import com.willfp.reforges.display.ReforgesDisplay; import com.willfp.reforges.effects.Effect; import com.willfp.reforges.effects.Effects; -import com.willfp.reforges.paper.PaperHandler; import com.willfp.reforges.reforges.Reforges; import com.willfp.reforges.reforges.util.ReforgeArgParser; import com.willfp.reforges.reforges.util.WatcherTriggers; @@ -20,7 +18,6 @@ import com.willfp.reforges.util.AntiPlaceListener; import com.willfp.reforges.util.DiscoverRecipeListener; import com.willfp.reforges.vault.EconomyHandler; import lombok.Getter; -import lombok.Setter; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.jetbrains.annotations.Nullable; @@ -47,13 +44,6 @@ public class ReforgesPlugin extends EcoPlugin { @Getter private final ReforgesJson reforgesJson; - /** - * Paper handler. - */ - @Getter - @Setter - private PaperHandler paperHandler; - /** * Internal constructor called by bukkit on plugin load. */ @@ -62,17 +52,6 @@ public class ReforgesPlugin extends EcoPlugin { this.targetYml = new TargetYml(this); this.reforgesJson = new ReforgesJson(this); instance = this; - - /* - I still use the spigot api for most things and don't want to suppress deprecation warnings - every 2 seconds, so I'm moving all paper related things off to their own module. - */ - if (Prerequisite.HAS_PAPER.isMet()) { - try { - Class.forName("com.willfp.reforges.paper.PaperLoader"); - } catch (ClassNotFoundException ignored) { - } - } } @Override diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java index 7543545..8c4a51a 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java @@ -11,7 +11,6 @@ import org.bukkit.entity.Trident; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.player.PlayerMoveEvent; @@ -112,21 +111,6 @@ public interface Watcher { // Empty default as effects only override required watchers. } - /** - * Called when an entity shoots a bow. - * - * @param shooter The entity that shot the bow. - * @param arrow The arrow that was shot. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onBowShoot(@NotNull final LivingEntity shooter, - @NotNull final Arrow arrow, - @NotNull final EntityShootBowEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - /** * Called when an entity shoots a projectile. * @@ -156,15 +140,15 @@ public interface Watcher { } /** - * Called when an arrow hits a block or entity. + * Called when a projectile hits a block or entity. * * @param shooter The entity that shot the arrow. * @param event The event that called this watcher. * @param config The effect config. */ - default void onArrowHit(@NotNull final LivingEntity shooter, - @NotNull final ProjectileHitEvent event, - @NotNull final JSONConfig config) { + default void onProjectileHit(@NotNull final LivingEntity shooter, + @NotNull final ProjectileHitEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -183,19 +167,6 @@ public interface Watcher { // Empty default as effects only override required watchers. } - /** - * Called when a trident hits a block or entity. - * - * @param shooter The entity that threw the trident. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onTridentHit(@NotNull final LivingEntity shooter, - @NotNull final ProjectileHitEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - /** * Called when an entity takes damage wearing armor. * diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt index 29e7f9a..fcfedab 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt @@ -1,11 +1,13 @@ package com.willfp.reforges.display +import com.willfp.eco.core.Prerequisite import com.willfp.eco.core.display.Display import com.willfp.eco.core.display.DisplayModule import com.willfp.eco.core.display.DisplayPriority import com.willfp.eco.core.fast.FastItemStack import com.willfp.eco.util.SkullUtils import com.willfp.reforges.ReforgesPlugin +import com.willfp.reforges.paper.toBukkit import com.willfp.reforges.reforges.meta.ReforgeTarget import com.willfp.reforges.reforges.util.ReforgeUtils import org.bukkit.ChatColor @@ -14,6 +16,7 @@ import org.bukkit.inventory.ItemStack import org.bukkit.inventory.meta.SkullMeta import org.bukkit.persistence.PersistentDataType +@Suppress("DEPRECATION") class ReforgesDisplay(private val plugin: ReforgesPlugin) : DisplayModule(plugin, DisplayPriority.HIGHEST) { override fun display( itemStack: ItemStack, @@ -67,14 +70,16 @@ class ReforgesDisplay(private val plugin: ReforgesPlugin) : DisplayModule(plugin lore.addAll(addLore) } if (plugin.configYml.getBool("reforge.display-in-name")) { - val displayName = plugin.paperHandler.getDisplayName(itemStack) - val newName = "${reforge.name} ${ChatColor.RESET}${displayName}" - meta.setDisplayName(newName) - meta.persistentDataContainer.set( - plugin.namespacedKeyFactory.create("shadowed_name"), - PersistentDataType.STRING, - displayName - ) + if (Prerequisite.HAS_PAPER.isMet) { + val displayName = itemStack.displayName().toBukkit() + val newName = "${reforge.name} ${ChatColor.RESET}${displayName}" + meta.setDisplayName(newName) + meta.persistentDataContainer.set( + plugin.namespacedKeyFactory.create("shadowed_name"), + PersistentDataType.STRING, + displayName + ) + } } } itemStack.itemMeta = meta @@ -86,7 +91,6 @@ class ReforgesDisplay(private val plugin: ReforgesPlugin) : DisplayModule(plugin return } - val target = ReforgeTarget.getForItem(itemStack) if (target == null && itemStack.type != Material.PLAYER_HEAD) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/paper/Components.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/paper/Components.kt new file mode 100644 index 0000000..0cabf1f --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/paper/Components.kt @@ -0,0 +1,18 @@ +package com.willfp.reforges.paper + +import net.kyori.adventure.text.Component +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer + +private val serializer = LegacyComponentSerializer.builder() + .hexColors() + .useUnusualXRepeatedCharacterHexFormat() + .character('§') + .build() + +fun String.toComponent(): Component { + return serializer.deserialize(this) +} + +fun Component.toBukkit(): String { + return serializer.serialize(this) +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/paper/PaperHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/paper/PaperHandler.kt deleted file mode 100644 index f0b4bcd..0000000 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/paper/PaperHandler.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.willfp.reforges.paper - -import org.bukkit.inventory.ItemStack - -interface PaperHandler { - fun getDisplayName(itemStack: ItemStack): String -} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.java b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.java deleted file mode 100644 index 783400e..0000000 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.java +++ /dev/null @@ -1,303 +0,0 @@ -package com.willfp.reforges.reforges.util; - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.PluginDependent; -import com.willfp.eco.core.config.interfaces.JSONConfig; -import com.willfp.eco.core.events.EntityDeathByEntityEvent; -import com.willfp.eco.core.events.PlayerJumpEvent; -import com.willfp.eco.core.integrations.antigrief.AntigriefManager; -import com.willfp.eco.core.integrations.mcmmo.McmmoManager; -import com.willfp.eco.util.ArrowUtils; -import com.willfp.eco.util.NumberUtils; -import com.willfp.reforges.reforges.Reforge; -import org.bukkit.block.Block; -import org.bukkit.entity.AbstractArrow; -import org.bukkit.entity.Arrow; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.entity.Trident; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityShootBowEvent; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; -import org.bukkit.inventory.EntityEquipment; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; - -public class WatcherTriggers extends PluginDependent implements Listener { - /** - * Create new listener for watcher events. - * - * @param plugin The plugin to link the events to. - */ - public WatcherTriggers(@NotNull final EcoPlugin plugin) { - super(plugin); - } - - /** - * Called when an entity launches a projectile. - * - * @param event The event to listen for. - */ - @EventHandler(ignoreCancelled = true) - public void onProjectileLaunch(@NotNull final ProjectileLaunchEvent event) { - if (McmmoManager.isFake(event)) { - return; - } - - if (!(event.getEntity() instanceof AbstractArrow)) { - return; - } - - if (!(event.getEntity().getShooter() instanceof Player)) { - return; - } - - LivingEntity shooter = (LivingEntity) event.getEntity().getShooter(); - - Projectile projectile = event.getEntity(); - - if (shooter.getEquipment() == null) { - return; - } - - ItemStack item = shooter.getEquipment().getItemInMainHand(); - - if (projectile instanceof Trident trident) { - item = trident.getItem(); - } - - Reforge reforge = ReforgeUtils.getReforge(item); - - if (reforge == null) { - return; - } - - for (Map.Entry entry : reforge.getEffects().entrySet()) { - if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) { - continue; - } - entry.getKey().onProjectileLaunch(shooter, projectile, event, entry.getValue()); - } - } - - /** - * Called when an entity takes fall damage. - * - * @param event The event to listen for. - */ - @EventHandler(ignoreCancelled = true) - public void onFallDamage(@NotNull final EntityDamageEvent event) { - if (McmmoManager.isFake(event)) { - return; - } - - if (!event.getCause().equals(EntityDamageEvent.DamageCause.FALL)) { - return; - } - - if (!(event.getEntity() instanceof LivingEntity victim)) { - return; - } - - EntityEquipment entityEquipment = victim.getEquipment(); - - if (entityEquipment == null) { - return; - } - - for (ItemStack itemStack : entityEquipment.getArmorContents()) { - if (itemStack == null) { - continue; - } - - Reforge reforge = ReforgeUtils.getReforge(itemStack); - - if (reforge == null) { - continue; - } - - - for (Map.Entry entry : reforge.getEffects().entrySet()) { - if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) { - continue; - } - entry.getKey().onFallDamage(victim, event, entry.getValue()); - } - } - } - - /** - * Called when an arrow hits a block or entity. - * - * @param event The event to listen for. - */ - @EventHandler(ignoreCancelled = true) - public void onArrowHit(@NotNull final ProjectileHitEvent event) { - if (McmmoManager.isFake(event)) { - return; - } - - if (!(event.getEntity().getShooter() instanceof LivingEntity shooter)) { - return; - } - - if (!(event.getEntity() instanceof Arrow arrow)) { - return; - } - - if (event.getEntity().getShooter() == null) { - return; - } - - ItemStack bow = ArrowUtils.getBow(arrow); - - if (bow == null) { - return; - } - - Reforge reforge = ReforgeUtils.getReforge(bow); - - if (reforge == null) { - return; - } - - - for (Map.Entry entry : reforge.getEffects().entrySet()) { - if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) { - continue; - } - entry.getKey().onArrowHit(shooter, event, entry.getValue()); - } - } - - /** - * Called when a trident hits a block or entity. - * - * @param event The event to listen for. - */ - @EventHandler(ignoreCancelled = true) - public void onTridentHit(@NotNull final ProjectileHitEvent event) { - if (McmmoManager.isFake(event)) { - return; - } - - if (!(event.getEntity().getShooter() instanceof LivingEntity shooter)) { - return; - } - - if (event.getEntity().getShooter() == null) { - return; - } - - if (!(event.getEntity() instanceof Trident trident)) { - return; - } - - ItemStack item = trident.getItem(); - - Reforge reforge = ReforgeUtils.getReforge(item); - - if (reforge == null) { - return; - } - - for (Map.Entry entry : reforge.getEffects().entrySet()) { - if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) { - continue; - } - entry.getKey().onTridentHit(shooter, event, entry.getValue()); - } - } - - /** - * Called when an entity takes damage wearing armor. - * - * @param event The event to listen for. - */ - @EventHandler(ignoreCancelled = true) - public void onDamageWearingArmor(@NotNull final EntityDamageEvent event) { - if (McmmoManager.isFake(event)) { - return; - } - - if (!(event.getEntity() instanceof LivingEntity victim)) { - return; - } - - EntityEquipment entityEquipment = victim.getEquipment(); - - if (entityEquipment == null) { - return; - } - - for (ItemStack itemStack : entityEquipment.getArmorContents()) { - if (itemStack == null) { - continue; - } - - Reforge reforge = ReforgeUtils.getReforge(itemStack); - - if (reforge == null) { - continue; - } - - for (Map.Entry entry : reforge.getEffects().entrySet()) { - if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) { - continue; - } - entry.getKey().onDamageWearingArmor(victim, event, entry.getValue()); - } - } - } - - /** - * Called when an entity throws a trident. - * - * @param event The event to listen for. - */ - @EventHandler(ignoreCancelled = true) - public void onTridentLaunch(@NotNull final ProjectileLaunchEvent event) { - if (McmmoManager.isFake(event)) { - return; - } - - if (!(event.getEntity() instanceof Trident trident)) { - return; - } - - if (!(event.getEntity().getShooter() instanceof LivingEntity)) { - return; - } - - LivingEntity shooter = (LivingEntity) trident.getShooter(); - ItemStack item = trident.getItem(); - - if (shooter == null) { - return; - } - - Reforge reforge = ReforgeUtils.getReforge(item); - - if (reforge == null) { - return; - } - - for (Map.Entry entry : reforge.getEffects().entrySet()) { - if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) { - continue; - } - - entry.getKey().onTridentLaunch(shooter, trident, event, entry.getValue()); - } - } -} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt index 64c7981..f11f70b 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt @@ -13,7 +13,8 @@ import org.bukkit.event.Listener import org.bukkit.event.block.BlockBreakEvent import org.bukkit.event.entity.EntityDamageByEntityEvent import org.bukkit.event.entity.EntityDamageEvent -import org.bukkit.event.entity.EntityShootBowEvent +import org.bukkit.event.entity.ProjectileHitEvent +import org.bukkit.event.entity.ProjectileLaunchEvent class WatcherTriggers( private val plugin: EcoPlugin @@ -228,28 +229,117 @@ class WatcherTriggers( } @EventHandler(ignoreCancelled = true) - fun onBowShoot(event: EntityShootBowEvent) { + fun onProjectileLaunch(event: ProjectileLaunchEvent) { if (McmmoManager.isFake(event)) { return } - if (event.projectile.type != EntityType.ARROW) { + + val shooter = event.entity.shooter + + if (shooter !is LivingEntity) { return } - val shooter = event.entity + val equipment = shooter.equipment ?: return - val arrow = event.projectile as Arrow + var item = equipment.itemInMainHand - val bow = ArrowUtils.getBow(arrow) ?: return + if (event.entity is Trident) { + item = (event.entity as Trident).item + } - val reforge = ReforgeUtils.getReforge(bow) ?: return + val reforge = ReforgeUtils.getReforge(item) ?: return for ((effect, config) in reforge.effects) { if (NumberUtils.randFloat(0.0, 100.0) > config.getDoubleOrNull("chance") ?: 100.0) { continue } - effect.onBowShoot(shooter, arrow, event, config) + effect.onProjectileLaunch(shooter, event.entity, event, config) } } + @EventHandler(ignoreCancelled = true) + fun onFallDamage(event: EntityDamageEvent) { + if (McmmoManager.isFake(event)) { + return + } + + if (event.cause != EntityDamageEvent.DamageCause.FALL) { + return + } + + val victim = event.entity + + if (victim !is LivingEntity) { + return + } + + val equipment = victim.equipment ?: return + + for (itemStack in equipment.armorContents) { + val reforge = ReforgeUtils.getReforge(itemStack) ?: continue + + for ((effect, config) in reforge.effects) { + if (NumberUtils.randFloat(0.0, 100.0) > config.getDoubleOrNull("chance") ?: 100.0) { + continue + } + effect.onFallDamage(victim, event, config) + } + } + } + + @EventHandler(ignoreCancelled = true) + fun onProjectileHit(event: ProjectileHitEvent) { + if (McmmoManager.isFake(event)) { + return + } + + val projectile = event.entity + val shooter = projectile.shooter + + if (shooter !is LivingEntity) { + return + } + + val item = when (projectile) { + is Arrow -> ArrowUtils.getBow(projectile) + is Trident -> projectile.item + else -> null + } ?: return + + val reforge = ReforgeUtils.getReforge(item) ?: return + + for ((effect, config) in reforge.effects) { + if (NumberUtils.randFloat(0.0, 100.0) > config.getDoubleOrNull("chance") ?: 100.0) { + continue + } + effect.onProjectileHit(shooter, event, config) + } + } + + @EventHandler(ignoreCancelled = true) + fun onDamageWearingArmor(event: EntityDamageEvent) { + if (McmmoManager.isFake(event)) { + return + } + + val victim = event.entity + + if (victim !is LivingEntity) { + return + } + + val equipment = victim.equipment ?: return + + for (itemStack in equipment.armorContents) { + val reforge = ReforgeUtils.getReforge(itemStack) ?: continue + + for ((effect, config) in reforge.effects) { + if (NumberUtils.randFloat(0.0, 100.0) > config.getDoubleOrNull("chance") ?: 100.0) { + continue + } + effect.onDamageWearingArmor(victim, event, config) + } + } + } } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 617ef9c..0151cbb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,5 +2,4 @@ rootProject.name = 'Reforges' // Core include ':eco-core' -include ':eco-core:core-plugin' -include ':eco-core:core-paper' \ No newline at end of file +include ':eco-core:core-plugin' \ No newline at end of file