From 7b8d7aad51d158e059ac79ed42109cbe86c6a530 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 4 Sep 2023 16:41:08 +0500 Subject: [PATCH] v3.5.6 --- .../enchantment/type/BlockBreakEnchant.java | 2 +- .../enchantment/type/BlockDropEnchant.java | 4 +- .../api/enchantment/type/BowEnchant.java | 6 +- .../api/enchantment/type/CombatEnchant.java | 4 +- .../api/enchantment/type/DamageEnchant.java | 2 +- .../api/enchantment/type/InteractEnchant.java | 2 +- .../enchantment/EnchantRegistry.java | 1 - .../impl/armor/DarknessCloakEnchant.java | 4 +- .../impl/armor/EnchantColdSteel.java | 4 +- .../impl/armor/EnchantFireShield.java | 4 +- .../impl/armor/EnchantFlameWalker.java | 11 ++- .../impl/armor/EnchantHardened.java | 4 +- .../impl/armor/EnchantIceShield.java | 4 +- .../impl/armor/StoppingForceEnchant.java | 4 +- .../impl/bow/DarknessArrowsEnchant.java | 8 +- .../enchantment/impl/bow/EnchantBomber.java | 12 +-- .../impl/bow/EnchantConfusingArrows.java | 8 +- .../impl/bow/EnchantDragonfireArrows.java | 8 +- .../impl/bow/EnchantElectrifiedArrows.java | 10 +-- .../enchantment/impl/bow/EnchantEnderBow.java | 10 +-- .../impl/bow/EnchantExplosiveArrows.java | 6 +- .../enchantment/impl/bow/EnchantGhast.java | 10 +-- .../enchantment/impl/bow/EnchantHover.java | 8 +- .../impl/bow/EnchantPoisonedArrows.java | 8 +- .../impl/bow/EnchantWitheredArrows.java | 8 +- .../enchantment/impl/bow/FlareEnchant.java | 6 +- .../enchantment/impl/bow/SniperEnchant.java | 8 +- .../impl/tool/CurseOfMediocrityEnchant.java | 9 +- .../impl/tool/EnchantBlastMining.java | 61 +++++-------- .../impl/tool/EnchantCurseOfMisfortune.java | 6 +- .../impl/tool/EnchantDivineTouch.java | 16 ++-- .../impl/tool/EnchantLuckyMiner.java | 4 +- .../impl/tool/EnchantReplanter.java | 12 +-- .../impl/tool/EnchantSilkChest.java | 8 +- .../enchantment/impl/tool/EnchantSmelter.java | 6 +- .../impl/tool/EnchantTelekinesis.java | 16 ++-- .../impl/tool/EnchantTreasures.java | 16 ++-- .../enchantment/impl/tool/EnchantTunnel.java | 21 ++--- .../impl/tool/EnchantVeinminer.java | 24 ++--- .../impl/weapon/EnchantBaneOfNetherspawn.java | 8 +- .../impl/weapon/EnchantBlindness.java | 4 +- .../impl/weapon/EnchantConfusion.java | 4 +- .../enchantment/impl/weapon/EnchantCure.java | 6 +- .../impl/weapon/EnchantCutter.java | 4 +- .../impl/weapon/EnchantDoubleStrike.java | 6 +- .../impl/weapon/EnchantExhaust.java | 4 +- .../impl/weapon/EnchantIceAspect.java | 4 +- .../impl/weapon/EnchantParalyze.java | 4 +- .../enchantment/impl/weapon/EnchantRage.java | 4 +- .../impl/weapon/EnchantRocket.java | 4 +- .../impl/weapon/EnchantSurprise.java | 4 +- .../impl/weapon/EnchantTemper.java | 6 +- .../impl/weapon/EnchantThunder.java | 4 +- .../impl/weapon/EnchantVampire.java | 6 +- .../enchantment/impl/weapon/EnchantVenom.java | 4 +- .../impl/weapon/EnchantVillageDefender.java | 8 +- .../impl/weapon/EnchantWither.java | 4 +- .../listener/EnchantGenericListener.java | 54 +++++++----- .../listener/EnchantHandlerListener.java | 20 ++--- .../util/EnchantDropContainer.java | 1 + .../enchantment/util/EnchantUtils.java | 88 +++++++++++++++---- .../excellentenchants/nms/EnchantNMS.java | 3 + .../nms/v1_17_R1/V1_17_R1.java | 22 +++++ .../nms/v1_18_R2/V1_18_R2.java | 22 +++++ .../nms/v1_19_R3/V1_19_R3.java | 22 +++++ .../nms/v1_20_R1/V1_20_R1.java | 52 +++++++++++ 66 files changed, 437 insertions(+), 300 deletions(-) diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockBreakEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockBreakEnchant.java index f1300eb..6cce6ad 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockBreakEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockBreakEnchant.java @@ -8,5 +8,5 @@ import su.nightexpress.excellentenchants.api.enchantment.IEnchantment; public interface BlockBreakEnchant extends IEnchantment { - boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level); + boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockDropEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockDropEnchant.java index ea44355..fbccb78 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockDropEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BlockDropEnchant.java @@ -4,11 +4,9 @@ import org.bukkit.entity.Player; import org.bukkit.event.block.BlockDropItemEvent; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; import su.nightexpress.excellentenchants.api.enchantment.IEnchantment; public interface BlockDropEnchant extends IEnchantment { - boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull EnchantDropContainer dropContainer, - @NotNull Player player, @NotNull ItemStack item, int level); + boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull Player player, @NotNull ItemStack item, int level); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BowEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BowEnchant.java index 6845c15..8b4df42 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BowEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/BowEnchant.java @@ -11,11 +11,11 @@ import su.nightexpress.excellentenchants.api.enchantment.IEnchantment; public interface BowEnchant extends IEnchantment { - boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level); + boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level); - boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level); + boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level); - boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, + boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/CombatEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/CombatEnchant.java index 6386f6f..32d0fe8 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/CombatEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/CombatEnchant.java @@ -8,11 +8,11 @@ import su.nightexpress.excellentenchants.api.enchantment.IEnchantment; public interface CombatEnchant extends IEnchantment { - boolean onAttack(@NotNull EntityDamageByEntityEvent e, + boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level); - boolean onProtect(@NotNull EntityDamageByEntityEvent e, + boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/DamageEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/DamageEnchant.java index 1e295c6..12448ad 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/DamageEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/DamageEnchant.java @@ -8,5 +8,5 @@ import su.nightexpress.excellentenchants.api.enchantment.IEnchantment; public interface DamageEnchant extends IEnchantment { - boolean onDamage(@NotNull EntityDamageEvent e, @NotNull LivingEntity entity, @NotNull ItemStack item, int level); + boolean onDamage(@NotNull EntityDamageEvent event, @NotNull LivingEntity entity, @NotNull ItemStack item, int level); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/InteractEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/InteractEnchant.java index 1d9b54e..2193876 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/InteractEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/api/enchantment/type/InteractEnchant.java @@ -8,5 +8,5 @@ import su.nightexpress.excellentenchants.api.enchantment.IEnchantment; public interface InteractEnchant extends IEnchantment { - boolean onInteract(@NotNull PlayerInteractEvent e, @NotNull Player player, @NotNull ItemStack item, int level); + boolean onInteract(@NotNull PlayerInteractEvent event, @NotNull Player player, @NotNull ItemStack item, int level); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/EnchantRegistry.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/EnchantRegistry.java index 52fdc55..eee5431 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/EnchantRegistry.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/EnchantRegistry.java @@ -124,7 +124,6 @@ public class EnchantRegistry { this.register(SniperEnchant.ID, () -> new SniperEnchant(plugin)); this.register(EnchantPoisonedArrows.ID, () -> new EnchantPoisonedArrows(plugin)); this.register(EnchantWitheredArrows.ID, () -> new EnchantWitheredArrows(plugin)); - if (Version.isAbove(Version.V1_18_R2)) { this.register(DarknessArrowsEnchant.ID, () -> new DarknessArrowsEnchant(plugin)); this.register(DarknessCloakEnchant.ID, () -> new DarknessCloakEnchant(plugin)); diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/DarknessCloakEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/DarknessCloakEnchant.java index be1432a..c2600bf 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/DarknessCloakEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/DarknessCloakEnchant.java @@ -62,12 +62,12 @@ public class DarknessCloakEnchant extends ExcellentEnchant implements Chanced, P } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(victim)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(damager, level)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantColdSteel.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantColdSteel.java index 712c3d6..e6ac365 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantColdSteel.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantColdSteel.java @@ -61,12 +61,12 @@ public class EnchantColdSteel extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFireShield.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFireShield.java index db63449..6c11e5d 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFireShield.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFireShield.java @@ -62,12 +62,12 @@ public class EnchantFireShield extends ExcellentEnchant implements Chanced, Comb } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(victim)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFlameWalker.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFlameWalker.java index 43817a1..95ccb28 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFlameWalker.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantFlameWalker.java @@ -19,6 +19,7 @@ import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import su.nexmedia.engine.Version; import su.nexmedia.engine.api.particle.SimpleParticle; import su.nexmedia.engine.api.server.AbstractTask; import su.nexmedia.engine.utils.Pair; @@ -180,9 +181,11 @@ public class EnchantFlameWalker extends ExcellentEnchant implements Cleanable { Pair pair = BLOCKS_TO_DESTROY.get(block); long time = pair.getFirst(); if (now >= time) { - block.getWorld().getPlayers().forEach(player -> { - player.sendBlockDamage(block.getLocation(), 0F, pair.getSecond()); - }); + if (Version.isAtLeast(Version.V1_19_R3)) { + block.getWorld().getPlayers().forEach(player -> { + player.sendBlockDamage(block.getLocation(), 0F, pair.getSecond()); + }); + } block.setType(Material.LAVA); @@ -191,7 +194,7 @@ public class EnchantFlameWalker extends ExcellentEnchant implements Cleanable { return true; } - else { + else if (Version.isAtLeast(Version.V1_19_R3)) { long diff = TimeUnit.MILLISECONDS.toSeconds(time - now); float progress = (float) (1D - Math.min(1D, diff / 5D)); diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantHardened.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantHardened.java index c15b446..504f8db 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantHardened.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantHardened.java @@ -60,12 +60,12 @@ public class EnchantHardened extends ExcellentEnchant implements Chanced, Potion } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantIceShield.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantIceShield.java index 06bbc66..5735c4b 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantIceShield.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/EnchantIceShield.java @@ -61,12 +61,12 @@ public class EnchantIceShield extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(victim)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(damager, level)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/StoppingForceEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/StoppingForceEnchant.java index f51a849..87db573 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/StoppingForceEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/armor/StoppingForceEnchant.java @@ -59,12 +59,12 @@ public class StoppingForceEnchant extends ExcellentEnchant implements Chanced, C } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(victim)) return false; if (!this.checkTriggerChance(level)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/DarknessArrowsEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/DarknessArrowsEnchant.java index dfd41ff..9570c2f 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/DarknessArrowsEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/DarknessArrowsEnchant.java @@ -77,9 +77,9 @@ public class DarknessArrowsEnchant extends ExcellentEnchant implements Chanced, } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; - if (!(e.getProjectile() instanceof Arrow arrow)) return false; + if (!(event.getProjectile() instanceof Arrow arrow)) return false; if (!this.checkTriggerChance(level)) return false; arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED); @@ -87,12 +87,12 @@ public class DarknessArrowsEnchant extends ExcellentEnchant implements Chanced, } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return this.isOurProjectile(projectile); } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return this.isOurProjectile(projectile); } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantBomber.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantBomber.java index 4f6d58f..1a15d85 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantBomber.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantBomber.java @@ -74,26 +74,26 @@ public class EnchantBomber extends ExcellentEnchant implements Chanced, BowEncha } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; if (!this.checkTriggerChance(level)) return false; - if (!(e.getProjectile() instanceof Projectile projectile)) return false; + if (!(event.getProjectile() instanceof Projectile projectile)) return false; TNTPrimed primed = projectile.getWorld().spawn(projectile.getLocation(), TNTPrimed.class); - primed.setVelocity(projectile.getVelocity().multiply(e.getForce() * 1.25)); + primed.setVelocity(projectile.getVelocity().multiply(event.getForce() * 1.25)); primed.setFuseTicks(this.getFuseTicks(level)); primed.setSource(shooter); - e.setProjectile(primed); + event.setProjectile(primed); return true; } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return false; } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantConfusingArrows.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantConfusingArrows.java index 0b17a99..ef4fd4a 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantConfusingArrows.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantConfusingArrows.java @@ -77,9 +77,9 @@ public class EnchantConfusingArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; - if (!(e.getProjectile() instanceof Arrow arrow)) return false; + if (!(event.getProjectile() instanceof Arrow arrow)) return false; if (!this.checkTriggerChance(level)) return false; arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED); @@ -87,12 +87,12 @@ public class EnchantConfusingArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return this.isOurProjectile(projectile); } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return this.isOurProjectile(projectile); } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantDragonfireArrows.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantDragonfireArrows.java index 1e67940..c21f35d 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantDragonfireArrows.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantDragonfireArrows.java @@ -98,16 +98,16 @@ public class EnchantDragonfireArrows extends ExcellentEnchant implements Chanced } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; return this.checkTriggerChance(level); } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { if (!this.isOurProjectile(projectile)) return false; - if (e.getHitEntity() != null) return false; + if (event.getHitEntity() != null) return false; if (projectile.getShooter() == null) return false; this.createCloud(projectile.getShooter(), projectile.getLocation() , level); @@ -115,7 +115,7 @@ public class EnchantDragonfireArrows extends ExcellentEnchant implements Chanced } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isOurProjectile(projectile)) return false; this.createCloud(shooter, victim.getLocation(), level); diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantElectrifiedArrows.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantElectrifiedArrows.java index 62f7d0c..274541a 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantElectrifiedArrows.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantElectrifiedArrows.java @@ -72,18 +72,18 @@ public class EnchantElectrifiedArrows extends ExcellentEnchant implements Chance } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; return this.checkTriggerChance(level); } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { if (!this.isOurProjectile(projectile)) return false; - if (e.getHitEntity() != null || e.getHitBlock() == null) return false; + if (event.getHitEntity() != null || event.getHitBlock() == null) return false; - Block block = e.getHitBlock(); + Block block = event.getHitBlock(); block.getWorld().strikeLightning(block.getLocation()).setMetadata(META_NO_ITEM_DAMAGE, new FixedMetadataValue(plugin, true)); if (this.hasVisualEffects()) { Location center = LocationUtil.getCenter(block.getLocation()); @@ -94,7 +94,7 @@ public class EnchantElectrifiedArrows extends ExcellentEnchant implements Chance } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isOurProjectile(projectile)) return false; plugin.getServer().getScheduler().runTask(plugin, () -> { diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantEnderBow.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantEnderBow.java index 17d0cad..795ff07 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantEnderBow.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantEnderBow.java @@ -60,24 +60,24 @@ public class EnchantEnderBow extends ExcellentEnchant implements BowEnchant, Cha } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; if (!this.checkTriggerChance(level)) return false; - if (!(e.getProjectile() instanceof Projectile projectile)) return false; + if (!(event.getProjectile() instanceof Projectile projectile)) return false; EnderPearl pearl = shooter.launchProjectile(EnderPearl.class); pearl.setVelocity(projectile.getVelocity()); - e.setProjectile(pearl); + event.setProjectile(pearl); return true; } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return false; } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantExplosiveArrows.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantExplosiveArrows.java index 58c18a3..e61bd74 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantExplosiveArrows.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantExplosiveArrows.java @@ -100,14 +100,14 @@ public class EnchantExplosiveArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; return this.checkTriggerChance(level); } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { if (!this.isOurProjectile(projectile)) return false; Entity shooter = null; @@ -126,7 +126,7 @@ public class EnchantExplosiveArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return this.isOurProjectile(projectile); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantGhast.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantGhast.java index 5f63afe..949a0f1 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantGhast.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantGhast.java @@ -79,10 +79,10 @@ public class EnchantGhast extends ExcellentEnchant implements BowEnchant, Chance } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; if (!this.checkTriggerChance(level)) return false; - if (!(e.getProjectile() instanceof Projectile projectile)) return false; + if (!(event.getProjectile() instanceof Projectile projectile)) return false; Fireball fireball; @@ -99,17 +99,17 @@ public class EnchantGhast extends ExcellentEnchant implements BowEnchant, Chance fireball.setIsIncendiary(this.isFireSpread()); fireball.setYield(this.getYield(level)); - e.setProjectile(fireball); + event.setProjectile(fireball); return true; } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return false; } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantHover.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantHover.java index da52935..08f8683 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantHover.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantHover.java @@ -77,9 +77,9 @@ public class EnchantHover extends ExcellentEnchant implements Chanced, Arrowed, } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; - if (!(e.getProjectile() instanceof Arrow arrow)) return false; + if (!(event.getProjectile() instanceof Arrow arrow)) return false; if (!this.checkTriggerChance(level)) return false; arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED); @@ -87,12 +87,12 @@ public class EnchantHover extends ExcellentEnchant implements Chanced, Arrowed, } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return this.isOurProjectile(projectile); } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return this.isOurProjectile(projectile); } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantPoisonedArrows.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantPoisonedArrows.java index 133da9c..52b1822 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantPoisonedArrows.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantPoisonedArrows.java @@ -77,9 +77,9 @@ public class EnchantPoisonedArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; - if (!(e.getProjectile() instanceof Arrow arrow)) return false; + if (!(event.getProjectile() instanceof Arrow arrow)) return false; if (!this.checkTriggerChance(level)) return false; arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED); @@ -87,12 +87,12 @@ public class EnchantPoisonedArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return this.isOurProjectile(projectile); } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return this.isOurProjectile(projectile); } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantWitheredArrows.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantWitheredArrows.java index 74f8231..70472fc 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantWitheredArrows.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/EnchantWitheredArrows.java @@ -77,9 +77,9 @@ public class EnchantWitheredArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; - if (!(e.getProjectile() instanceof Arrow arrow)) return false; + if (!(event.getProjectile() instanceof Arrow arrow)) return false; if (!this.checkTriggerChance(level)) return false; arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED); @@ -87,12 +87,12 @@ public class EnchantWitheredArrows extends ExcellentEnchant implements Chanced, } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return this.isOurProjectile(projectile); } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return this.isOurProjectile(projectile); } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java index 0394371..ec6bc95 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java @@ -69,8 +69,8 @@ public class FlareEnchant extends ExcellentEnchant implements Chanced, Arrowed, } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { - if (!(e.getProjectile() instanceof Arrow arrow)) return false; + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + if (!(event.getProjectile() instanceof Arrow arrow)) return false; if (!this.isAvailableToUse(shooter)) return false; if (!this.checkTriggerChance(level)) return false; @@ -110,7 +110,7 @@ public class FlareEnchant extends ExcellentEnchant implements Chanced, Arrowed, } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/SniperEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/SniperEnchant.java index 1f7f941..6fc6e77 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/SniperEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/SniperEnchant.java @@ -65,13 +65,13 @@ public class SniperEnchant extends ExcellentEnchant implements BowEnchant, Chanc } @Override - public boolean onShoot(@NotNull EntityShootBowEvent e, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { + public boolean onShoot(@NotNull EntityShootBowEvent event, @NotNull LivingEntity shooter, @NotNull ItemStack bow, int level) { if (!this.isAvailableToUse(shooter)) return false; if (!this.checkTriggerChance(level)) return false; double modifier = this.getSpeedModifier(level); - Entity entity = e.getProjectile(); + Entity entity = event.getProjectile(); Vector vector = entity.getVelocity(); entity.setVelocity(vector.multiply(modifier)); @@ -79,12 +79,12 @@ public class SniperEnchant extends ExcellentEnchant implements BowEnchant, Chanc } @Override - public boolean onHit(@NotNull ProjectileHitEvent e, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { + public boolean onHit(@NotNull ProjectileHitEvent event, @NotNull Projectile projectile, @NotNull ItemStack bow, int level) { return false; } @Override - public boolean onDamage(@NotNull EntityDamageByEntityEvent e, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onDamage(@NotNull EntityDamageByEntityEvent event, @NotNull Projectile projectile, @NotNull LivingEntity shooter, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/CurseOfMediocrityEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/CurseOfMediocrityEnchant.java index e4887ff..6607314 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/CurseOfMediocrityEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/CurseOfMediocrityEnchant.java @@ -16,7 +16,6 @@ import su.nightexpress.excellentenchants.api.enchantment.type.DeathEnchant; import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; import su.nightexpress.excellentenchants.enchantment.impl.meta.ChanceImplementation; import su.nightexpress.excellentenchants.enchantment.type.FitItemType; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; import su.nightexpress.excellentenchants.enchantment.util.EnchantPriority; public class CurseOfMediocrityEnchant extends ExcellentEnchant implements Chanced, BlockDropEnchant, DeathEnchant { @@ -62,7 +61,7 @@ public class CurseOfMediocrityEnchant extends ExcellentEnchant implements Chance } @Override - public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull EnchantDropContainer dropContainer, + public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; @@ -75,12 +74,6 @@ public class CurseOfMediocrityEnchant extends ExcellentEnchant implements Chance drop.setItemStack(stack); }); - dropContainer.getDrop().forEach(stack -> { - ItemUtil.mapMeta(stack, meta -> { - meta.getEnchants().keySet().forEach(meta::removeEnchant); - }); - }); - return true; } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantBlastMining.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantBlastMining.java index 6f34627..8c0042d 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantBlastMining.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantBlastMining.java @@ -11,7 +11,6 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.metadata.FixedMetadataValue; import org.jetbrains.annotations.NotNull; import su.nexmedia.engine.utils.NumberUtil; import su.nightexpress.excellentenchants.ExcellentEnchants; @@ -33,14 +32,12 @@ public class EnchantBlastMining extends ExcellentEnchant implements Chanced, Blo public static final String ID = "blast_mining"; public static final String PLACEHOLDER_EXPLOSION_POWER = "%enchantment_explosion_power%"; - private static final String META_EXPLOSION_SOURCE = ID + "_explosion_source"; - private static final String META_EXPLOSION_MINED = ID + "_explosion_mined"; - private EnchantScaler explosionPower; private EnchantScaler minBlockStrength; - private ChanceImplementation chanceImplementation; + private int explodeLevel; + public EnchantBlastMining(@NotNull ExcellentEnchants plugin) { super(plugin, ID, EnchantPriority.MEDIUM); this.getDefaults().setDescription(Placeholders.ENCHANTMENT_CHANCE + "% chance to mine blocks by explosion."); @@ -52,11 +49,14 @@ public class EnchantBlastMining extends ExcellentEnchant implements Chanced, Blo @Override public void loadSettings() { super.loadSettings(); + this.chanceImplementation = ChanceImplementation.create(this, "20.0 * " + Placeholders.ENCHANTMENT_LEVEL); + this.explosionPower = EnchantScaler.read(this, "Settings.Explosion.Power", "3.0 + (" + Placeholders.ENCHANTMENT_LEVEL + " - 1.0 * 0.25)", "Explosion power. The more power = the more blocks (area) to explode."); + this.minBlockStrength = EnchantScaler.read(this, "Settings.Min_Block_Strength", "1.5 - " + Placeholders.ENCHANTMENT_LEVEL + " / 10", "Minimal block strength value for the enchantment to have effect.", @@ -80,8 +80,8 @@ public class EnchantBlastMining extends ExcellentEnchant implements Chanced, Blo return (float) minBlockStrength.getValue(level); } - private boolean isBlockHardEnough(@NotNull Block block, int level) { - float strength = block.getType().getHardness();//plugin.getNMS().getBlockStrength(block); + private boolean isHardEnough(@NotNull Block block, int level) { + float strength = block.getType().getHardness(); return (strength >= this.getMinBlockStrength(level)); } @@ -98,50 +98,37 @@ public class EnchantBlastMining extends ExcellentEnchant implements Chanced, Blo } @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { if (!this.isAvailableToUse(player)) return false; + if (EnchantUtils.isBusy()) return false; - if (EnchantUtils.contains(item, EnchantVeinminer.ID)) return false; - if (EnchantUtils.contains(item, EnchantTunnel.ID)) return false; - - Block block = e.getBlock(); - if (block.hasMetadata(META_EXPLOSION_MINED)) return false; - - if (!this.isBlockHardEnough(block, level)) return false; + Block block = event.getBlock(); + if (!this.isHardEnough(block, level)) return false; if (!this.checkTriggerChance(level)) return false; float power = (float) this.getExplosionPower(level); - player.setMetadata(META_EXPLOSION_SOURCE, new FixedMetadataValue(plugin, level)); + this.explodeLevel = level; NoCheatPlusHook.exemptBlocks(player); boolean exploded = block.getWorld().createExplosion(block.getLocation(), power, false, true, player); NoCheatPlusHook.unexemptBlocks(player); - player.removeMetadata(META_EXPLOSION_SOURCE, plugin); + this.explodeLevel = -1; + return exploded; } // Process explosion event to mine blocks. @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - public void onBlastExplosionEvent(EntityExplodeEvent e) { - if (!(e.getEntity() instanceof Player player)) return; - if (!player.hasMetadata(META_EXPLOSION_SOURCE)) return; + public void onBlastExplosionEvent(EntityExplodeEvent event) { + if (this.explodeLevel <= 0) return; + if (!(event.getEntity() instanceof Player player)) return; - int level = player.getMetadata(META_EXPLOSION_SOURCE).get(0).asInt(); - List blockList = e.blockList(); - - // Remove the 'source' block which player mined and caused the explosion to prevent duplicated drops. - // Remove all the 'soft' blocks that should not be exploded. - blockList.removeIf(block -> block.getLocation().equals(e.getLocation()) || !this.isBlockHardEnough(block, level)); - - // Break all 'exploded' blocks by a player, adding metadata to them to prevent trigger enchantment in a loop. + List blockList = event.blockList(); blockList.forEach(block -> { - block.setMetadata(META_EXPLOSION_MINED, new FixedMetadataValue(plugin, true)); - //plugin.getNMS().breakBlock(player, block); - player.breakBlock(block); - block.removeMetadata(META_EXPLOSION_MINED, plugin); - }); + if (block.getLocation().equals(event.getLocation()) || !this.isHardEnough(block, this.explodeLevel)) return; - // Clear list of 'exploded' blocks so the event won't affect them, as they are already mined by a player. + EnchantUtils.safeBusyBreak(player, block); + }); blockList.clear(); } @@ -151,14 +138,12 @@ public class EnchantBlastMining extends ExcellentEnchant implements Chanced, Blo if (e.getCause() != DamageCause.ENTITY_EXPLOSION) return; if (!(e.getDamager() instanceof Player player)) return; - e.setCancelled(player.hasMetadata(META_EXPLOSION_SOURCE)); + e.setCancelled(this.explodeLevel > 0); } // Do not reduce item durability for 'exploded' blocks. @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onBlastExplosionItemDamage(PlayerItemDamageEvent e) { - if (!e.getPlayer().hasMetadata(META_EXPLOSION_SOURCE)) return; - - e.setCancelled(true); + e.setCancelled(this.explodeLevel > 0); } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantCurseOfMisfortune.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantCurseOfMisfortune.java index ca40ad4..7e4098f 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantCurseOfMisfortune.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantCurseOfMisfortune.java @@ -74,12 +74,12 @@ public class EnchantCurseOfMisfortune extends ExcellentEnchant implements Chance } @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; - e.setDropItems(false); - if (!this.isDropExp()) e.setExpToDrop(0); + event.setDropItems(false); + if (!this.isDropExp()) event.setExpToDrop(0); return true; } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantDivineTouch.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantDivineTouch.java index c92c32d..316142e 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantDivineTouch.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantDivineTouch.java @@ -31,8 +31,8 @@ import su.nightexpress.excellentenchants.api.enchantment.type.BlockDropEnchant; import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; import su.nightexpress.excellentenchants.enchantment.impl.meta.ChanceImplementation; import su.nightexpress.excellentenchants.enchantment.type.FitItemType; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; import su.nightexpress.excellentenchants.enchantment.util.EnchantPriority; +import su.nightexpress.excellentenchants.enchantment.util.EnchantUtils; public class EnchantDivineTouch extends ExcellentEnchant implements Chanced, BlockBreakEnchant, BlockDropEnchant { @@ -102,16 +102,16 @@ public class EnchantDivineTouch extends ExcellentEnchant implements Chanced, Blo } @Override - public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull EnchantDropContainer dropContainer, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { BlockState state = event.getBlockState(); Block block = state.getBlock(); if (!block.hasMetadata(META_HANDLE)) return false; if (!(state instanceof CreatureSpawner spawnerBlock)) return false; - dropContainer.getDrop().add(this.getSpawner(spawnerBlock)); + EnchantUtils.popResource(event, this.getSpawner(spawnerBlock)); - Location location = LocationUtil.getCenter(block.getLocation()); if (this.hasVisualEffects()) { + Location location = LocationUtil.getCenter(block.getLocation()); SimpleParticle.of(Particle.VILLAGER_HAPPY).play(location, 0.3, 0.15, 30); } block.removeMetadata(META_HANDLE, this.plugin); @@ -119,14 +119,14 @@ public class EnchantDivineTouch extends ExcellentEnchant implements Chanced, Blo } @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { - Block block = e.getBlock(); + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { + Block block = event.getBlock(); if (!this.isAvailableToUse(player)) return false; if (!(block.getState() instanceof CreatureSpawner spawnerBlock)) return false; if (!this.checkTriggerChance(level)) return false; - e.setExpToDrop(0); - e.setDropItems(true); + event.setExpToDrop(0); + event.setDropItems(true); block.setMetadata(META_HANDLE, new FixedMetadataValue(this.plugin, true)); return false; // Do not consume charges } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantLuckyMiner.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantLuckyMiner.java index 6bcecfe..0c559cd 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantLuckyMiner.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantLuckyMiner.java @@ -66,12 +66,12 @@ public class EnchantLuckyMiner extends ExcellentEnchant implements Chanced, Bloc } @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; double expMod = this.getExpModifier(level); - e.setExpToDrop((int) ((double) e.getExpToDrop() * expMod)); + event.setExpToDrop((int) ((double) event.getExpToDrop() * expMod)); return true; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantReplanter.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantReplanter.java index ae96884..1295971 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantReplanter.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantReplanter.java @@ -120,21 +120,21 @@ public class EnchantReplanter extends ExcellentEnchant implements Chanced, Inter } @Override - public boolean onInteract(@NotNull PlayerInteractEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onInteract(@NotNull PlayerInteractEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { if (!this.isReplantOnRightClick()) return false; if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; // Check for a event hand. We dont want to trigger it twice. - if (e.getHand() != EquipmentSlot.HAND) return false; - if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return false; + if (event.getHand() != EquipmentSlot.HAND) return false; + if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return false; // Check if player holds seeds to plant them by offhand interaction. ItemStack off = player.getInventory().getItemInOffHand(); if (!off.getType().isAir() && CROPS.contains(off.getType())) return false; // Check if clicked block is a farmland. - Block blockGround = e.getClickedBlock(); + Block blockGround = event.getClickedBlock(); if (blockGround == null) return false; if (blockGround.getType() != Material.FARMLAND && blockGround.getType() != Material.SOUL_SAND) return false; @@ -158,12 +158,12 @@ public class EnchantReplanter extends ExcellentEnchant implements Chanced, Inter } @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { if (!this.isReplantOnPlantBreak()) return false; if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; - Block blockPlant = e.getBlock(); + Block blockPlant = event.getBlock(); //if (EnchantTelekinesis.isDropHandled(blockPlant)) return false; //if (EnchantRegister.TELEKINESIS != null && item.containsEnchantment(EnchantRegister.TELEKINESIS)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSilkChest.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSilkChest.java index a289d30..434afc0 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSilkChest.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSilkChest.java @@ -28,8 +28,8 @@ import su.nightexpress.excellentenchants.Placeholders; import su.nightexpress.excellentenchants.api.enchantment.type.BlockDropEnchant; import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; import su.nightexpress.excellentenchants.enchantment.type.FitItemType; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; import su.nightexpress.excellentenchants.enchantment.util.EnchantPriority; +import su.nightexpress.excellentenchants.enchantment.util.EnchantUtils; import java.util.ArrayList; import java.util.List; @@ -130,7 +130,7 @@ public class EnchantSilkChest extends ExcellentEnchant implements BlockDropEncha } @Override - public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull EnchantDropContainer dropContainer, + public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { BlockState state = event.getBlockState(); Block block = state.getBlock(); @@ -143,12 +143,12 @@ public class EnchantSilkChest extends ExcellentEnchant implements BlockDropEncha chest.getBlockInventory().addItem(event.getItems().stream().map(Item::getItemStack).toList().toArray(new ItemStack[0])); if (chest.getBlockInventory().isEmpty()) { - dropContainer.getDrop().add(new ItemStack(chest.getType())); + EnchantUtils.popResource(event, new ItemStack(chest.getType())); return false; } // Добавляем кастомный сундук в кастомный дроп лист. - dropContainer.getDrop().add(this.getSilkChest(chest)); + EnchantUtils.popResource(event, this.getSilkChest(chest)); // Очищаем инвентарь сундука и дефолтный дроп лист. chest.getBlockInventory().clear(); diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSmelter.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSmelter.java index d544ebe..34aa611 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSmelter.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantSmelter.java @@ -22,7 +22,6 @@ import su.nightexpress.excellentenchants.api.enchantment.type.BlockDropEnchant; import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; import su.nightexpress.excellentenchants.enchantment.impl.meta.ChanceImplementation; import su.nightexpress.excellentenchants.enchantment.type.FitItemType; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; import su.nightexpress.excellentenchants.enchantment.util.EnchantPriority; import java.util.Map; @@ -89,7 +88,10 @@ public class EnchantSmelter extends ExcellentEnchant implements Chanced, BlockDr } @Override - public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull EnchantDropContainer dropContainer, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { + // TODO Use furnace recipes + // TODO Re-add smelted items instead of setType + if (event.getBlockState() instanceof Container) return false; if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTelekinesis.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTelekinesis.java index 8fde3f0..756224f 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTelekinesis.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTelekinesis.java @@ -8,17 +8,15 @@ import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import su.nexmedia.engine.utils.PlayerUtil; import su.nightexpress.excellentenchants.ExcellentEnchants; -import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; import su.nightexpress.excellentenchants.api.enchantment.meta.Chanced; import su.nightexpress.excellentenchants.api.enchantment.type.BlockDropEnchant; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; -import su.nightexpress.excellentenchants.enchantment.util.EnchantPriority; +import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; import su.nightexpress.excellentenchants.enchantment.impl.meta.ChanceImplementation; import su.nightexpress.excellentenchants.enchantment.type.FitItemType; +import su.nightexpress.excellentenchants.enchantment.util.EnchantPriority; import java.util.ArrayList; import java.util.List; -import java.util.Objects; public class EnchantTelekinesis extends ExcellentEnchant implements Chanced, BlockDropEnchant { @@ -58,17 +56,15 @@ public class EnchantTelekinesis extends ExcellentEnchant implements Chanced, Blo } @Override - public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull EnchantDropContainer dropContainer, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; - List drops = new ArrayList<>(); - drops.addAll(event.getItems().stream().map(Item::getItemStack).toList()); - drops.addAll(dropContainer.getDrop()); - drops.removeIf(Objects::isNull); + List drops = new ArrayList<>(event.getItems().stream().map(Item::getItemStack).toList()); + //drops.addAll(dropContainer.getDrop()); + //drops.removeIf(Objects::isNull); drops.forEach(drop -> PlayerUtil.addItem(player, drop)); - dropContainer.getDrop().clear(); event.getItems().clear(); return true; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTreasures.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTreasures.java index e2b5d9f..4ad2c34 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTreasures.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTreasures.java @@ -21,8 +21,8 @@ import su.nightexpress.excellentenchants.api.enchantment.type.BlockDropEnchant; import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; import su.nightexpress.excellentenchants.enchantment.impl.meta.ChanceImplementation; import su.nightexpress.excellentenchants.enchantment.type.FitItemType; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; import su.nightexpress.excellentenchants.enchantment.util.EnchantPriority; +import su.nightexpress.excellentenchants.enchantment.util.EnchantUtils; import java.util.*; import java.util.function.Predicate; @@ -128,15 +128,15 @@ public class EnchantTreasures extends ExcellentEnchant implements Chanced, Block } @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { - if (PlayerBlockTracker.isTracked(e.getBlock())) { - e.getBlock().setMetadata(META, new FixedMetadataValue(plugin, true)); + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { + if (PlayerBlockTracker.isTracked(event.getBlock())) { + event.getBlock().setMetadata(META, new FixedMetadataValue(plugin, true)); } return false; } @Override - public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull EnchantDropContainer dropContainer, @NotNull Player player, @NotNull ItemStack item, int level) { + public boolean onDrop(@NotNull BlockDropItemEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { Block block = event.getBlockState().getBlock(); if (block.hasMetadata(META)) { block.removeMetadata(META, plugin); @@ -145,7 +145,11 @@ public class EnchantTreasures extends ExcellentEnchant implements Chanced, Block if (!this.isAvailableToUse(player)) return false; if (!this.checkTriggerChance(level)) return false; - dropContainer.getDrop().addAll(this.getTreasures(event.getBlockState().getType())); + this.getTreasures(event.getBlockState().getType()).forEach(treasure -> { + EnchantUtils.popResource(event, treasure); + }); + + //dropContainer.getDrop().addAll(this.getTreasures(event.getBlockState().getType())); return true; } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTunnel.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTunnel.java index c10d3c9..9f1a731 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTunnel.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantTunnel.java @@ -20,7 +20,6 @@ import su.nightexpress.excellentenchants.hook.impl.NoCheatPlusHook; import java.util.HashSet; import java.util.Set; -import java.util.UUID; public class EnchantTunnel extends ExcellentEnchant implements BlockBreakEnchant { @@ -34,12 +33,10 @@ public class EnchantTunnel extends ExcellentEnchant implements BlockBreakEnchant INTERACTABLE_BLOCKS.add(Material.DEEPSLATE_REDSTONE_ORE); } - private final Set activePlayers; private boolean disableOnSneak; public EnchantTunnel(@NotNull ExcellentEnchants plugin) { super(plugin, ID, EnchantPriority.HIGH); - this.activePlayers = new HashSet<>(); this.getDefaults().setDescription("Mines multiple blocks at once in a certain shape."); this.getDefaults().setLevelMax(3); @@ -66,19 +63,13 @@ public class EnchantTunnel extends ExcellentEnchant implements BlockBreakEnchant return EnchantmentTarget.TOOL; } - public boolean isTunneling(@NotNull Player player) { - return this.activePlayers.contains(player.getUniqueId()); - } - @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack item, int level) { - if (this.isTunneling(player)) return false; + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack item, int level) { + if (EnchantUtils.isBusy()) return false; if (!this.isAvailableToUse(player)) return false; if (this.disableOnSneak && player.isSneaking()) return false; - if (EnchantUtils.contains(item, EnchantVeinminer.ID)) return false; - if (EnchantUtils.contains(item, EnchantBlastMining.ID)) return false; - Block block = e.getBlock(); + Block block = event.getBlock(); if (block.getType().isInteractable() && !INTERACTABLE_BLOCKS.contains(block.getType())) return false; if (block.getDrops(item).isEmpty()) return false; @@ -90,9 +81,8 @@ public class EnchantTunnel extends ExcellentEnchant implements BlockBreakEnchant int blocksBroken = 1; if (level == 1) blocksBroken = 2; else if (level == 2) blocksBroken = 5; - else if (level == 3) blocksBroken = 9; + else if (level >= 3) blocksBroken = 9; - this.activePlayers.add(player.getUniqueId()); NoCheatPlusHook.exemptBlocks(player); for (int i = 0; i < blocksBroken; i++) { @@ -121,11 +111,10 @@ public class EnchantTunnel extends ExcellentEnchant implements BlockBreakEnchant if (addType == Material.BEDROCK || addType == Material.END_PORTAL || addType == Material.END_PORTAL_FRAME) continue; if (addType == Material.OBSIDIAN && addType != block.getType()) continue; - player.breakBlock(blockAdd); + EnchantUtils.safeBusyBreak(player, blockAdd); } NoCheatPlusHook.unexemptBlocks(player); - this.activePlayers.remove(player.getUniqueId()); return true; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantVeinminer.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantVeinminer.java index 4889c7a..a11e299 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantVeinminer.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/tool/EnchantVeinminer.java @@ -23,7 +23,6 @@ import su.nightexpress.excellentenchants.hook.impl.NoCheatPlusHook; import java.util.HashSet; import java.util.Set; -import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -36,15 +35,13 @@ public class EnchantVeinminer extends ExcellentEnchant implements BlockBreakEnch BlockFace.WEST, BlockFace.SOUTH, BlockFace.NORTH }; - private static final String PLACEHOLDER_BLOCK_LIMIT = "%enchantment_block_limit%"; + private static final String PLACEHOLDER_BLOCK_LIMIT = "%enchantment_block_limit%"; private Scaler blocksLimit; private Set blocksAffected; - private final Set activePlayers; public EnchantVeinminer(@NotNull ExcellentEnchants plugin) { super(plugin, ID, EnchantPriority.HIGH); - this.activePlayers = new HashSet<>(); this.getDefaults().setDescription("Mines up to " + PLACEHOLDER_BLOCK_LIMIT + " blocks of the ore vein at once."); this.getDefaults().setLevelMax(3); @@ -110,10 +107,6 @@ public class EnchantVeinminer extends ExcellentEnchant implements BlockBreakEnch .filter(blockAdded -> blockAdded.getType() == block.getType()).collect(Collectors.toSet()); } - public boolean isInVein(@NotNull Player player) { - return this.activePlayers.contains(player.getUniqueId()); - } - private void vein(@NotNull Player player, @NotNull Block source, int level) { Set ores = new HashSet<>(); Set prepare = new HashSet<>(this.getNearby(source)); @@ -128,26 +121,21 @@ public class EnchantVeinminer extends ExcellentEnchant implements BlockBreakEnch prepare.addAll(nearby); } ores.remove(source); - ores.forEach(player::breakBlock); + ores.forEach(ore -> EnchantUtils.safeBusyBreak(player, ore)); } @Override - public boolean onBreak(@NotNull BlockBreakEvent e, @NotNull Player player, @NotNull ItemStack tool, int level) { - if (this.isInVein(player)) return false; + public boolean onBreak(@NotNull BlockBreakEvent event, @NotNull Player player, @NotNull ItemStack tool, int level) { if (!this.isAvailableToUse(player)) return false; - if (EnchantUtils.contains(tool, EnchantBlastMining.ID)) return false; - if (EnchantUtils.contains(tool, EnchantTunnel.ID)) return false; + if (EnchantUtils.isBusy()) return false; - Block block = e.getBlock(); - if (block.getDrops(tool).isEmpty()) return false; + Block block = event.getBlock(); + if (block.getDrops(tool, player).isEmpty()) return false; if (!this.getBlocksAffected().contains(block.getType())) return false; - this.activePlayers.add(player.getUniqueId()); NoCheatPlusHook.exemptBlocks(player); this.vein(player, block, level); NoCheatPlusHook.unexemptBlocks(player); - this.activePlayers.remove(player.getUniqueId()); - return true; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBaneOfNetherspawn.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBaneOfNetherspawn.java index f2538de..9e13639 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBaneOfNetherspawn.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBaneOfNetherspawn.java @@ -65,13 +65,13 @@ public class EnchantBaneOfNetherspawn extends ExcellentEnchant implements Combat } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!ENTITY_TYPES.contains(victim.getType())) return false; if (!this.isAvailableToUse(damager)) return false; - double damageEvent = e.getDamage(); + double damageEvent = event.getDamage(); double damageAdd = this.getDamageModifier(level); - e.setDamage(this.damageModifier ? damageEvent * damageAdd : damageEvent + damageAdd); + event.setDamage(this.damageModifier ? damageEvent * damageAdd : damageEvent + damageAdd); if (this.hasVisualEffects()) { SimpleParticle.of(Particle.SMOKE_NORMAL).play(victim.getEyeLocation(), 0.25, 0.1, 30); } @@ -79,7 +79,7 @@ public class EnchantBaneOfNetherspawn extends ExcellentEnchant implements Combat } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBlindness.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBlindness.java index 06c54c9..78e7f7a 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBlindness.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantBlindness.java @@ -61,7 +61,7 @@ public class EnchantBlindness extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(victim, level)) return false; @@ -73,7 +73,7 @@ public class EnchantBlindness extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantConfusion.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantConfusion.java index aa456a1..a534885 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantConfusion.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantConfusion.java @@ -62,7 +62,7 @@ public class EnchantConfusion extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(victim, level)) return false; @@ -75,7 +75,7 @@ public class EnchantConfusion extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCure.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCure.java index 2f760e1..78ecc8a 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCure.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCure.java @@ -53,13 +53,13 @@ public class EnchantCure extends ExcellentEnchant implements Chanced, CombatEnch } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!CUREABLE.contains(victim.getType())) return false; if (!this.checkTriggerChance(level)) return false; if (!(damager instanceof Player player)) return false; - e.setCancelled(true); + event.setCancelled(true); if (this.hasVisualEffects()) { SimpleParticle.of(Particle.CLOUD).play(victim.getEyeLocation(), 0.25, 0.1, 30); @@ -77,7 +77,7 @@ public class EnchantCure extends ExcellentEnchant implements Chanced, CombatEnch } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCutter.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCutter.java index 3d570da..e98b170 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCutter.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantCutter.java @@ -78,7 +78,7 @@ public class EnchantCutter extends ExcellentEnchant implements Chanced, CombatEn } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; EntityEquipment equipment = victim.getEquipment(); @@ -117,7 +117,7 @@ public class EnchantCutter extends ExcellentEnchant implements Chanced, CombatEn } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantDoubleStrike.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantDoubleStrike.java index c6f5225..546f820 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantDoubleStrike.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantDoubleStrike.java @@ -50,11 +50,11 @@ public class EnchantDoubleStrike extends ExcellentEnchant implements Chanced, Co } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; - e.setDamage(e.getDamage() * 2D); + event.setDamage(event.getDamage() * 2D); if (this.hasVisualEffects()) { SimpleParticle.of(Particle.EXPLOSION_NORMAL).play(victim.getEyeLocation(), 0.25, 0.15, 15); @@ -64,7 +64,7 @@ public class EnchantDoubleStrike extends ExcellentEnchant implements Chanced, Co } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantExhaust.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantExhaust.java index ad671b6..339b37c 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantExhaust.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantExhaust.java @@ -62,7 +62,7 @@ public class EnchantExhaust extends ExcellentEnchant implements Chanced, Potione } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(victim, level)) return false; @@ -74,7 +74,7 @@ public class EnchantExhaust extends ExcellentEnchant implements Chanced, Potione } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantIceAspect.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantIceAspect.java index 6aa4805..11c5ba5 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantIceAspect.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantIceAspect.java @@ -61,7 +61,7 @@ public class EnchantIceAspect extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(victim, level)) return false; @@ -75,7 +75,7 @@ public class EnchantIceAspect extends ExcellentEnchant implements Chanced, Potio } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantParalyze.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantParalyze.java index f50ed68..58d9def 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantParalyze.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantParalyze.java @@ -61,7 +61,7 @@ public class EnchantParalyze extends ExcellentEnchant implements Chanced, Potion } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(victim, level)) return false; @@ -73,7 +73,7 @@ public class EnchantParalyze extends ExcellentEnchant implements Chanced, Potion } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRage.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRage.java index f83be3d..d42899a 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRage.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRage.java @@ -61,7 +61,7 @@ public class EnchantRage extends ExcellentEnchant implements Chanced, Potioned, } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(damager, level)) return false; @@ -73,7 +73,7 @@ public class EnchantRage extends ExcellentEnchant implements Chanced, Potioned, } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRocket.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRocket.java index 9613c3e..e8b3c8a 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRocket.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantRocket.java @@ -61,7 +61,7 @@ public class EnchantRocket extends ExcellentEnchant implements Chanced, CombatEn } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; @@ -96,7 +96,7 @@ public class EnchantRocket extends ExcellentEnchant implements Chanced, CombatEn } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantSurprise.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantSurprise.java index 943aaef..407b000 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantSurprise.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantSurprise.java @@ -64,7 +64,7 @@ public class EnchantSurprise extends ExcellentEnchant implements Chanced, Potion } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; @@ -80,7 +80,7 @@ public class EnchantSurprise extends ExcellentEnchant implements Chanced, Potion } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantTemper.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantTemper.java index 63a4651..0cc08a8 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantTemper.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantTemper.java @@ -68,7 +68,7 @@ public class EnchantTemper extends ExcellentEnchant implements CombatEnchant { } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; double healthPoint = this.getHealthPoint(level); @@ -84,12 +84,12 @@ public class EnchantTemper extends ExcellentEnchant implements CombatEnchant { double damageCap = this.getDamageCapacity(level); double damageFinal = Math.min(damageCap, 1D + damageAmount * pointAmount); - e.setDamage(e.getDamage() * damageFinal); + event.setDamage(event.getDamage() * damageFinal); return true; } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantThunder.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantThunder.java index 8072c01..85a6447 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantThunder.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantThunder.java @@ -60,7 +60,7 @@ public class EnchantThunder extends ExcellentEnchant implements Chanced, CombatE } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (this.isInThunderstormOnly() && !victim.getWorld().isThundering()) return false; if (victim.getLocation().getBlock().getLightFromSky() != 15) return false; @@ -76,7 +76,7 @@ public class EnchantThunder extends ExcellentEnchant implements Chanced, CombatE } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVampire.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVampire.java index 774fc59..073b116 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVampire.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVampire.java @@ -73,7 +73,7 @@ public class EnchantVampire extends ExcellentEnchant implements Chanced, CombatE } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; double healthMax = EntityUtil.getAttribute(damager, Attribute.GENERIC_MAX_HEALTH); @@ -83,7 +83,7 @@ public class EnchantVampire extends ExcellentEnchant implements Chanced, CombatE if (!this.checkTriggerChance(level)) return false; double healAmount = this.getHealAmount(level); - double healFinal = this.isHealMultiplier() ? e.getDamage() * healAmount : healAmount; + double healFinal = this.isHealMultiplier() ? event.getDamage() * healAmount : healAmount; EntityRegainHealthEvent healthEvent = new EntityRegainHealthEvent(damager, healFinal, EntityRegainHealthEvent.RegainReason.CUSTOM); plugin.getPluginManager().callEvent(healthEvent); @@ -98,7 +98,7 @@ public class EnchantVampire extends ExcellentEnchant implements Chanced, CombatE } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVenom.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVenom.java index a07b315..9feda0b 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVenom.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVenom.java @@ -61,7 +61,7 @@ public class EnchantVenom extends ExcellentEnchant implements Chanced, Potioned, } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(victim, level)) return false; @@ -73,7 +73,7 @@ public class EnchantVenom extends ExcellentEnchant implements Chanced, Potioned, } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVillageDefender.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVillageDefender.java index 1f1a524..f7692ac 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVillageDefender.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantVillageDefender.java @@ -61,15 +61,15 @@ public class EnchantVillageDefender extends ExcellentEnchant implements CombatEn } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!(victim instanceof Illager)) return false; double damageAdd = this.getDamageAddict(level); - double damageHas = e.getDamage(); + double damageHas = event.getDamage(); double damageFinal = this.isDamageMultiplier() ? (damageHas * damageAdd) : (damageHas + damageAdd); - e.setDamage(damageFinal); + event.setDamage(damageFinal); if (this.hasVisualEffects()) { SimpleParticle.of(Particle.VILLAGER_ANGRY).play(victim.getEyeLocation(), 0.25, 0.1, 30); @@ -78,7 +78,7 @@ public class EnchantVillageDefender extends ExcellentEnchant implements CombatEn } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantWither.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantWither.java index e39a6bb..6460a6f 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantWither.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/weapon/EnchantWither.java @@ -61,7 +61,7 @@ public class EnchantWither extends ExcellentEnchant implements Chanced, Potioned } @Override - public boolean onAttack(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onAttack(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { if (!this.isAvailableToUse(damager)) return false; if (!this.checkTriggerChance(level)) return false; if (!this.addEffect(victim, level)) return false; @@ -73,7 +73,7 @@ public class EnchantWither extends ExcellentEnchant implements Chanced, Potioned } @Override - public boolean onProtect(@NotNull EntityDamageByEntityEvent e, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { + public boolean onProtect(@NotNull EntityDamageByEntityEvent event, @NotNull LivingEntity damager, @NotNull LivingEntity victim, @NotNull ItemStack weapon, int level) { return false; } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantGenericListener.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantGenericListener.java index 915a059..bbd2e34 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantGenericListener.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantGenericListener.java @@ -1,5 +1,6 @@ package su.nightexpress.excellentenchants.enchantment.listener; +import org.bukkit.World; import org.bukkit.block.Chest; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.*; @@ -93,15 +94,20 @@ public class EnchantGenericListener extends AbstractListener // Handle Enchanting Table // --------------------------------------------------------------- @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onEnchantPopulateEnchantingTable(final EnchantItemEvent e) { - ItemStack target = e.getItem(); - Map enchantsPrepared = e.getEnchantsToAdd(); - Map enchantsToPopulate = EnchantUtils.getPopulationCandidates(target, ObtainType.ENCHANTING, enchantsPrepared, enchant -> enchant.getLevelByEnchantCost(e.getExpLevelCost())); + public void onEnchantPopulateEnchantingTable(final EnchantItemEvent event) { + ItemStack target = event.getItem(); + World world = event.getEnchanter().getWorld(); + + Map enchantsPrepared = event.getEnchantsToAdd(); + Map enchantsToPopulate = EnchantUtils.getPopulationCandidates( + target, ObtainType.ENCHANTING, enchantsPrepared, + enchant -> enchant.getLevelByEnchantCost(event.getExpLevelCost()), + world); enchantsPrepared.putAll(enchantsToPopulate); plugin.getServer().getScheduler().runTask(plugin, () -> { - ItemStack result = e.getInventory().getItem(0); + ItemStack result = event.getInventory().getItem(0); if (result == null) return; // Fix enchantments for Enchant Books. @@ -109,7 +115,7 @@ public class EnchantGenericListener extends AbstractListener // Server gets enchants from NMS to apply it on Book NBT tags. ItemMeta meta = result.getItemMeta(); if (meta instanceof EnchantmentStorageMeta storageMeta) { - e.getEnchantsToAdd().forEach((enchantment, level) -> { + event.getEnchantsToAdd().forEach((enchantment, level) -> { if (!storageMeta.hasStoredEnchant(enchantment)) { storageMeta.addStoredEnchant(enchantment, level, true); } @@ -117,14 +123,14 @@ public class EnchantGenericListener extends AbstractListener result.setItemMeta(storageMeta); } - e.getEnchantsToAdd().forEach((enchantment, level) -> { + event.getEnchantsToAdd().forEach((enchantment, level) -> { if (enchantment instanceof ExcellentEnchant enchant && enchant.isChargesEnabled()) { EnchantUtils.restoreCharges(result, enchant, level); } }); EnchantUtils.updateDisplay(result); - e.getInventory().setItem(0, result); + event.getInventory().setItem(0, result); }); } @@ -132,12 +138,13 @@ public class EnchantGenericListener extends AbstractListener // Adding Enchants to Villagers // --------------------------------------------------------------- @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEnchantPopulateVillagerAcquire(VillagerAcquireTradeEvent e) { - MerchantRecipe recipe = e.getRecipe(); + public void onEnchantPopulateVillagerAcquire(VillagerAcquireTradeEvent event) { + MerchantRecipe recipe = event.getRecipe(); ItemStack result = recipe.getResult(); + World world = event.getEntity().getWorld(); if (!EnchantUtils.isEnchantable(result)) return; - if (!EnchantUtils.populate(result, ObtainType.VILLAGER)) return; + if (!EnchantUtils.populate(result, ObtainType.VILLAGER, world)) return; int uses = recipe.getUses(); int maxUses = recipe.getMaxUses(); @@ -150,34 +157,36 @@ public class EnchantGenericListener extends AbstractListener MerchantRecipe recipe2 = new MerchantRecipe(result, uses, maxUses, expReward, villagerExperience, priceMultiplier, demand, specialPrice); recipe2.setIngredients(recipe.getIngredients()); - e.setRecipe(recipe2); + event.setRecipe(recipe2); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEnchantPopulateLoot(LootGenerateEvent e) { + public void onEnchantPopulateLoot(LootGenerateEvent event) { if (Config.getObtainSettings(ObtainType.LOOT_GENERATION).isEmpty()) return; - Entity entity = e.getEntity(); - InventoryHolder holder = e.getInventoryHolder(); + Entity entity = event.getEntity(); + InventoryHolder holder = event.getInventoryHolder(); + World world = event.getWorld(); if (entity instanceof Minecart || holder instanceof Chest) { - e.getLoot().forEach(item -> { + event.getLoot().forEach(item -> { if (item != null && EnchantUtils.isEnchantable(item)) { - EnchantUtils.populate(item, ObtainType.LOOT_GENERATION); + EnchantUtils.populate(item, ObtainType.LOOT_GENERATION, world); } }); } } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEnchantPopulateFishing(PlayerFishEvent e) { + public void onEnchantPopulateFishing(PlayerFishEvent event) { if (Config.getObtainSettings(ObtainType.FISHING).isEmpty()) return; - if (e.getState() != PlayerFishEvent.State.CAUGHT_FISH) return; - if (!(e.getCaught() instanceof Item item)) return; + if (event.getState() != PlayerFishEvent.State.CAUGHT_FISH) return; + if (!(event.getCaught() instanceof Item item)) return; ItemStack itemStack = item.getItemStack(); + World world = item.getWorld(); if (EnchantUtils.isEnchantable(itemStack)) { - EnchantUtils.populate(itemStack, ObtainType.FISHING); + EnchantUtils.populate(itemStack, ObtainType.FISHING, world); } } @@ -191,13 +200,14 @@ public class EnchantGenericListener extends AbstractListener EntityEquipment equipment = entity.getEquipment(); if (equipment == null) return; + World world = entity.getWorld(); boolean isMythic = EngineUtils.hasPlugin(HookId.MYTHIC_MOBS) && MythicMobsHook.isMythicMob(entity); boolean doPopulation = Config.getObtainSettings(ObtainType.MOB_SPAWNING).isPresent() && !isMythic; for (EquipmentSlot slot : EquipmentSlot.values()) { ItemStack item = equipment.getItem(slot); if (EnchantUtils.isEnchantable(item)) { - if (doPopulation) EnchantUtils.populate(item, ObtainType.MOB_SPAWNING); + if (doPopulation) EnchantUtils.populate(item, ObtainType.MOB_SPAWNING, world); EnchantUtils.getExcellents(item).forEach((enchant, level) -> EnchantUtils.restoreCharges(item, enchant, level)); equipment.setItem(slot, item); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java index fe145a8..6931d08 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java @@ -1,10 +1,7 @@ package su.nightexpress.excellentenchants.enchantment.listener; import org.bukkit.GameMode; -import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.block.BlockState; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; @@ -29,7 +26,6 @@ import su.nightexpress.excellentenchants.api.enchantment.meta.Arrowed; import su.nightexpress.excellentenchants.api.enchantment.type.*; import su.nightexpress.excellentenchants.config.Config; import su.nightexpress.excellentenchants.enchantment.EnchantManager; -import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer; import su.nightexpress.excellentenchants.enchantment.util.EnchantUtils; public class EnchantHandlerListener extends AbstractListener { @@ -282,26 +278,26 @@ public class EnchantHandlerListener extends AbstractListener } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEnchantBlockDropItem(BlockDropItemEvent e) { - Player player = e.getPlayer(); + public void onEnchantBlockDropItem(BlockDropItemEvent event) { + Player player = event.getPlayer(); if (player.getGameMode() == GameMode.CREATIVE) return; ItemStack tool = player.getInventory().getItemInMainHand(); if (tool.getType().isAir() || tool.getType() == Material.ENCHANTED_BOOK) return; - EnchantDropContainer dropContainer = new EnchantDropContainer(e); + //EnchantDropContainer dropContainer = new EnchantDropContainer(e); EnchantUtils.getExcellents(tool, BlockDropEnchant.class).forEach((enchant, level) -> { if (enchant.isOutOfCharges(tool)) return; - if (enchant.onDrop(e, dropContainer, player, tool, level)) { + if (enchant.onDrop(event, player, tool, level)) { enchant.consumeChargesNoUpdate(tool, level); } }); EnchantUtils.updateChargesDisplay(tool); - BlockState state = e.getBlockState(); - World world = state.getWorld(); - Location location = state.getLocation(); + //BlockState state = e.getBlockState(); + //World world = state.getWorld(); + //Location location = state.getLocation(); - dropContainer.getDrop().forEach(item -> world.dropItem(location, item)); + //dropContainer.getDrop().forEach(item -> world.dropItem(location, item)); } } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantDropContainer.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantDropContainer.java index a570150..723b5a9 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantDropContainer.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantDropContainer.java @@ -7,6 +7,7 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +@Deprecated public class EnchantDropContainer { private final BlockDropItemEvent parent; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java index 9aa5a55..a307e64 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java @@ -2,10 +2,14 @@ package su.nightexpress.excellentenchants.enchantment.util; import org.bukkit.Material; import org.bukkit.NamespacedKey; +import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.EnchantmentTarget; +import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.event.block.BlockDropItemEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; @@ -32,6 +36,7 @@ import su.nightexpress.excellentenchants.enchantment.type.ObtainType; import su.nightexpress.excellentenchants.tier.Tier; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -40,6 +45,37 @@ public class EnchantUtils { public static final NamespacedKey KEY_LORE_SIZE = new NamespacedKey(ExcellentEnchantsAPI.PLUGIN, "lore_size"); + private static boolean busyBreak = false; + + public static void popResource(@NotNull BlockDropItemEvent event, @NotNull ItemStack itemStack) { + Item item = ExcellentEnchantsAPI.PLUGIN.getEnchantNMS().popResource(event.getBlock(), itemStack); + event.getItems().add(item); + } + + public static boolean isBusyByOthers() { + return false; + } + + public static boolean isBusyByEnchant() { + return busyBreak; + } + + public static boolean isBusy() { + return isBusyByEnchant() || isBusyByOthers(); + } + + public static void busyBreak(@NotNull Player player, @NotNull Block block) { + busyBreak = true; + player.breakBlock(block); + busyBreak = false; + } + + public static void safeBusyBreak(@NotNull Player player, @NotNull Block block) { + if (!isBusy()) { + busyBreak(player, block); + } + } + @NotNull public static NamespacedKey createKey(@NotNull String id) { return NamespacedKey.minecraft(id.toLowerCase()); @@ -65,15 +101,19 @@ public class EnchantUtils { return item.getType() == Material.ENCHANTED_BOOK || Stream.of(EnchantmentTarget.values()).anyMatch(target -> target.includes(item)); } - public static boolean populate(@NotNull ItemStack item, @NotNull ObtainType obtainType) { - int enchantsHad = getAmount(item); + // TODO Move in populator class - getPopulationCandidates(item, obtainType).forEach((enchantment, level) -> { - add(item, enchantment, level, false); + public static boolean populate(@NotNull ItemStack item, @NotNull ObtainType obtainType, @Nullable World world) { + AtomicBoolean status = new AtomicBoolean(false); + + getPopulationCandidates(item, obtainType, world).forEach((enchantment, level) -> { + if (add(item, enchantment, level, false)) { + status.set(true); + } }); updateDisplay(item); - return getAmount(item) != enchantsHad; + return status.get(); } @NotNull @@ -88,14 +128,16 @@ public class EnchantUtils { } @NotNull - public static Map getPopulationCandidates(@NotNull ItemStack item, @NotNull ObtainType obtainType) { - return getPopulationCandidates(item, obtainType, new HashMap<>(), (enchant) -> enchant.generateLevel(obtainType)); + public static Map getPopulationCandidates(@NotNull ItemStack item, @NotNull ObtainType obtainType, + @Nullable World world) { + return getPopulationCandidates(item, obtainType, new HashMap<>(), (enchant) -> enchant.generateLevel(obtainType), world); } @NotNull public static Map getPopulationCandidates(@NotNull ItemStack item, @NotNull ObtainType obtainType, @NotNull Map enchantsPrepared, - @NotNull Function levelFunc) { + @NotNull Function levelFunc, + @Nullable World world) { Map enchantsToAdd = new HashMap<>(enchantsPrepared); ObtainSettings settings = Config.getObtainSettings(obtainType).orElse(null); @@ -104,44 +146,54 @@ public class EnchantUtils { int enchMax = settings.getEnchantsTotalMax(); int enchRoll = Rnd.get(settings.getEnchantsCustomMin(), settings.getEnchantsCustomMax()); - // Класс для исключения неудачных попыток. EnchantPopulator populator = new EnchantPopulator(obtainType, item); - // Добавляем сколько можем, пока нужное количество не будет добавлено или не закончатся чары и/или тиры. + // Try to populate as many as possible. while (!populator.isEmpty() && enchRoll > 0) { - // Достигнут максимум чар (любых) для итема, заканчиваем. + // Limit reached. if (enchantsToAdd.size() >= enchMax) break; Tier tier = populator.getTierByChance(); - if (tier == null) break; // Нет тира? + if (tier == null) break; // no tiers left. ExcellentEnchant enchant = populator.getEnchantByChance(tier); - // В тире нет подходящих чар (вообще) для итема, исключаем и идем дальше. + // Remove entire tier if no enchants can be selected. if (enchant == null) { populator.purge(tier); continue; } - // Среди уже добавленных чар есть конфликты с тем, что нашли. - // Исключаем, идем дальше. + // Remove disabled world enchants. + if (world != null && enchant.isDisabledInWorld(world)) { + populator.purge(tier, enchant); + continue; + } + + // Remove conflicting enchants. if (enchantsToAdd.keySet().stream().anyMatch(has -> has.conflictsWith(enchant) || enchant.conflictsWith(has))) { populator.purge(tier, enchant); continue; } - // Не получилось сгенерировать подходящий уровень. - // Исключаем, идем дальше. + // Level generation failed. int level = levelFunc.apply(enchant); if (level < enchant.getStartLevel()) { populator.purge(tier, enchant); continue; } - // Добавляем чар, засчитываем попытку. + // All good! populator.purge(tier, enchant); enchantsToAdd.put(enchant, level); enchRoll--; } + + if (!enchantsToAdd.isEmpty()) { + if (obtainType == ObtainType.VILLAGER && item.getType() == Material.ENCHANTED_BOOK && enchRoll == 1) { + getAll(item).keySet().forEach(enchantment -> remove(item, enchantment)); + } + } + return enchantsToAdd; } diff --git a/NMS/src/main/java/su/nightexpress/excellentenchants/nms/EnchantNMS.java b/NMS/src/main/java/su/nightexpress/excellentenchants/nms/EnchantNMS.java index 2cd518d..bf9f1eb 100644 --- a/NMS/src/main/java/su/nightexpress/excellentenchants/nms/EnchantNMS.java +++ b/NMS/src/main/java/su/nightexpress/excellentenchants/nms/EnchantNMS.java @@ -3,6 +3,7 @@ package su.nightexpress.excellentenchants.nms; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.FishHook; +import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -20,4 +21,6 @@ public interface EnchantNMS { @Nullable ItemStack getSpawnEgg(@NotNull LivingEntity entity); @NotNull Set handleFlameWalker(@NotNull LivingEntity entity, @NotNull Location location, int level); + + @NotNull Item popResource(@NotNull Block block, @NotNull ItemStack item); } diff --git a/V1_17_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_17_R1/V1_17_R1.java b/V1_17_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_17_R1/V1_17_R1.java index 552eb7e..2612742 100644 --- a/V1_17_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_17_R1/V1_17_R1.java +++ b/V1_17_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_17_R1/V1_17_R1.java @@ -3,9 +3,13 @@ package su.nightexpress.excellentenchants.nms.v1_17_R1; import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.game.ClientboundAnimatePacket; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.projectile.FishingHook; import net.minecraft.world.item.SpawnEggItem; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockState; @@ -13,12 +17,14 @@ import net.minecraft.world.phys.shapes.CollisionContext; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_17_R1.block.CraftBlock; import org.bukkit.craftbukkit.v1_17_R1.entity.CraftFishHook; import org.bukkit.craftbukkit.v1_17_R1.entity.CraftLivingEntity; import org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_17_R1.event.CraftEventFactory; import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; import org.bukkit.entity.FishHook; +import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -91,4 +97,20 @@ public class V1_17_R1 implements EnchantNMS { } return blocks; } + + @NotNull + public Item popResource(@NotNull Block block, @NotNull ItemStack item) { + Level world = ((CraftWorld)block.getWorld()).getHandle(); + BlockPos pos = ((CraftBlock)block).getPosition(); + net.minecraft.world.item.ItemStack itemstack = CraftItemStack.asNMSCopy(item); + + float yMod = EntityType.ITEM.getHeight() / 2.0F; + double x = (pos.getX() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + double y = (pos.getY() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D) - yMod; + double z = (pos.getZ() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + + ItemEntity itemEntity = new ItemEntity(world, x, y, z, itemstack); + itemEntity.setDefaultPickUpDelay(); + return (Item) itemEntity.getBukkitEntity(); + } } diff --git a/V1_18_R2/src/main/java/su/nightexpress/excellentenchants/nms/v1_18_R2/V1_18_R2.java b/V1_18_R2/src/main/java/su/nightexpress/excellentenchants/nms/v1_18_R2/V1_18_R2.java index 32a1472..8a97690 100644 --- a/V1_18_R2/src/main/java/su/nightexpress/excellentenchants/nms/v1_18_R2/V1_18_R2.java +++ b/V1_18_R2/src/main/java/su/nightexpress/excellentenchants/nms/v1_18_R2/V1_18_R2.java @@ -3,9 +3,13 @@ package su.nightexpress.excellentenchants.nms.v1_18_R2; import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.game.ClientboundAnimatePacket; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.projectile.FishingHook; import net.minecraft.world.item.SpawnEggItem; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockState; @@ -13,12 +17,14 @@ import net.minecraft.world.phys.shapes.CollisionContext; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_18_R2.block.CraftBlock; import org.bukkit.craftbukkit.v1_18_R2.entity.CraftFishHook; import org.bukkit.craftbukkit.v1_18_R2.entity.CraftLivingEntity; import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_18_R2.event.CraftEventFactory; import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack; import org.bukkit.entity.FishHook; +import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -91,4 +97,20 @@ public class V1_18_R2 implements EnchantNMS { } return blocks; } + + @NotNull + public Item popResource(@NotNull Block block, @NotNull ItemStack item) { + Level world = ((CraftWorld)block.getWorld()).getHandle(); + BlockPos pos = ((CraftBlock)block).getPosition(); + net.minecraft.world.item.ItemStack itemstack = CraftItemStack.asNMSCopy(item); + + float yMod = EntityType.ITEM.getHeight() / 2.0F; + double x = (pos.getX() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + double y = (pos.getY() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D) - yMod; + double z = (pos.getZ() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + + ItemEntity itemEntity = new ItemEntity(world, x, y, z, itemstack); + itemEntity.setDefaultPickUpDelay(); + return (Item) itemEntity.getBukkitEntity(); + } } diff --git a/V1_19_R3/src/main/java/su/nightexpress/excellentenchants/nms/v1_19_R3/V1_19_R3.java b/V1_19_R3/src/main/java/su/nightexpress/excellentenchants/nms/v1_19_R3/V1_19_R3.java index d451be8..aece021 100644 --- a/V1_19_R3/src/main/java/su/nightexpress/excellentenchants/nms/v1_19_R3/V1_19_R3.java +++ b/V1_19_R3/src/main/java/su/nightexpress/excellentenchants/nms/v1_19_R3/V1_19_R3.java @@ -3,9 +3,13 @@ package su.nightexpress.excellentenchants.nms.v1_19_R3; import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.game.ClientboundAnimatePacket; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.projectile.FishingHook; import net.minecraft.world.item.SpawnEggItem; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockState; @@ -13,12 +17,14 @@ import net.minecraft.world.phys.shapes.CollisionContext; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_19_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R3.block.CraftBlock; import org.bukkit.craftbukkit.v1_19_R3.entity.CraftFishHook; import org.bukkit.craftbukkit.v1_19_R3.entity.CraftLivingEntity; import org.bukkit.craftbukkit.v1_19_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_19_R3.event.CraftEventFactory; import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemStack; import org.bukkit.entity.FishHook; +import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -91,4 +97,20 @@ public class V1_19_R3 implements EnchantNMS { } return blocks; } + + @NotNull + public Item popResource(@NotNull Block block, @NotNull ItemStack item) { + Level world = ((CraftWorld)block.getWorld()).getHandle(); + BlockPos pos = ((CraftBlock)block).getPosition(); + net.minecraft.world.item.ItemStack itemstack = CraftItemStack.asNMSCopy(item); + + float yMod = EntityType.ITEM.getHeight() / 2.0F; + double x = (pos.getX() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + double y = (pos.getY() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D) - yMod; + double z = (pos.getZ() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + + ItemEntity itemEntity = new ItemEntity(world, x, y, z, itemstack); + itemEntity.setDefaultPickUpDelay(); + return (Item) itemEntity.getBukkitEntity(); + } } diff --git a/V1_20_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_20_R1/V1_20_R1.java b/V1_20_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_20_R1/V1_20_R1.java index 4a2dfe4..ee8f237 100644 --- a/V1_20_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_20_R1/V1_20_R1.java +++ b/V1_20_R1/src/main/java/su/nightexpress/excellentenchants/nms/v1_20_R1/V1_20_R1.java @@ -3,9 +3,13 @@ package su.nightexpress.excellentenchants.nms.v1_20_R1; import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.game.ClientboundAnimatePacket; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.projectile.FishingHook; import net.minecraft.world.item.SpawnEggItem; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockState; @@ -13,12 +17,14 @@ import net.minecraft.world.phys.shapes.CollisionContext; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R1.block.CraftBlock; import org.bukkit.craftbukkit.v1_20_R1.entity.CraftFishHook; import org.bukkit.craftbukkit.v1_20_R1.entity.CraftLivingEntity; import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_20_R1.event.CraftEventFactory; import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; import org.bukkit.entity.FishHook; +import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -91,4 +97,50 @@ public class V1_20_R1 implements EnchantNMS { } return blocks; } + + @NotNull + public Item popResource(@NotNull Block block, @NotNull ItemStack item) { + Level world = ((CraftWorld)block.getWorld()).getHandle(); + BlockPos pos = ((CraftBlock)block).getPosition(); + net.minecraft.world.item.ItemStack itemstack = CraftItemStack.asNMSCopy(item); + + float yMod = EntityType.ITEM.getHeight() / 2.0F; + double x = (pos.getX() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + double y = (pos.getY() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D) - yMod; + double z = (pos.getZ() + 0.5F) + Mth.nextDouble(world.random, -0.25D, 0.25D); + + ItemEntity itemEntity = new ItemEntity(world, x, y, z, itemstack); + itemEntity.setDefaultPickUpDelay(); + return (Item) itemEntity.getBukkitEntity(); + } + + /*public static void popResourceFromFace(Level world, BlockPos blockposition, Direction enumdirection, ItemStack itemstack) { + int i = enumdirection.getStepX(); + int j = enumdirection.getStepY(); + int k = enumdirection.getStepZ(); + float f = EntityType.ITEM.getWidth() / 2.0F; + float f1 = EntityType.ITEM.getHeight() / 2.0F; + double d0 = (double)((float)blockposition.getX() + 0.5F) + (i == 0 ? Mth.nextDouble(world.random, -0.25D, 0.25D) : (double)((float)i * (0.5F + f))); + double d1 = (double)((float)blockposition.getY() + 0.5F) + (j == 0 ? Mth.nextDouble(world.random, -0.25D, 0.25D) : (double)((float)j * (0.5F + f1))) - (double)f1; + double d2 = (double)((float)blockposition.getZ() + 0.5F) + (k == 0 ? Mth.nextDouble(world.random, -0.25D, 0.25D) : (double)((float)k * (0.5F + f))); + double d3 = i == 0 ? Mth.nextDouble(world.random, -0.1D, 0.1D) : (double)i * 0.1D; + double d4 = j == 0 ? Mth.nextDouble(world.random, 0.0D, 0.1D) : (double)j * 0.1D + 0.1D; + double d5 = k == 0 ? Mth.nextDouble(world.random, -0.1D, 0.1D) : (double)k * 0.1D; + popResource(world, () -> { + return new ItemEntity(world, d0, d1, d2, itemstack, d3, d4, d5); + }, itemstack); + } + + private static void popResource(Level world, Supplier supplier, ItemStack itemstack) { + if (!world.isClientSide && !itemstack.isEmpty() && world.getGameRules().getBoolean(GameRules.RULE_DOBLOCKDROPS)) { + ItemEntity entityitem = (ItemEntity)supplier.get(); + entityitem.setDefaultPickUpDelay(); + if (world.captureDrops != null) { + world.captureDrops.add(entityitem); + } else { + world.addFreshEntity(entityitem); + } + } + + }*/ }