From 8a48f8142658d0a54013160e3a44731e2edc3591 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Thu, 11 Jul 2024 19:39:11 +0800 Subject: [PATCH] fix unbreakable --- .../customfishing/bukkit/config/BukkitConfigManager.java | 6 ++++++ .../customfishing/bukkit/item/BukkitItemManager.java | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java index 97b4dc08..04479155 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java @@ -421,6 +421,12 @@ public class BukkitConfigManager extends ConfigManager { item.setTag(context.arg(ContextKeys.ID), "CustomFishing", "id"); }; }, 2_000, "tag"); + this.registerItemParser(arg -> { + boolean enable = (boolean) arg; + return (item, context) -> { + item.unbreakable(enable); + }; + }, 2_211, "unbreakable"); this.registerItemParser(arg -> { boolean enable = (boolean) arg; return (item, context) -> { diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/item/BukkitItemManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/item/BukkitItemManager.java index ecc5b3d8..5d517893 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/item/BukkitItemManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/item/BukkitItemManager.java @@ -51,6 +51,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.block.*; import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.inventory.InventoryPickupItemEvent; import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.event.player.PlayerAttemptPickupItemEvent; @@ -434,10 +435,14 @@ public class BukkitItemManager implements ItemManager, Listener { } @EventHandler (ignoreCancelled = true) - public void onPickUpItem(PlayerAttemptPickupItemEvent event) { + public void onPickUpItem(EntityPickupItemEvent event) { String owner = event.getItem().getPersistentDataContainer().get(requireNonNull(NamespacedKey.fromString("owner", plugin.getBoostrap())), PersistentDataType.STRING); if (owner != null) { - if (!owner.equals(event.getPlayer().getName())) { + if (!(event.getEntity() instanceof Player player)) { + event.setCancelled(true); + return; + } + if (!owner.equals(player.getName())) { event.setCancelled(true); } }