@@ -67,7 +67,7 @@ public ItemDropHandler getItemHandler() {
6767 return (e , p , item ) -> {
6868 if (isItem (item .getItemStack ())) {
6969
70- if (!SlimefunUtils .canPlayerUseItem (p , Items .UNBREAKABLE_RUNE , true )) {
70+ if (!SlimefunUtils .canPlayerUseItem (p , Items .UNBREAKABLE_RUNE , true )) {
7171 return true ;
7272 }
7373
@@ -90,21 +90,19 @@ private void activate(@Nonnull Player p, @Nonnull Item rune) {
9090
9191 if (optional .isPresent ()) {
9292 Item item = (Item ) optional .get ();
93- ItemStack itemStack = item .getItemStack ();
93+ ItemStack itemStack = item .getItemStack (). clone () ;
9494
9595 if (itemStack .getAmount () == 1 ) {
9696 l .getWorld ().strikeLightningEffect (l );
9797
9898 Scheduler .run (10 , () -> {
99- if (rune .isValid () && item .isValid () && itemStack .getAmount () == 1 ) {
100-
99+ if (rune .isValid () && item .isValid () && itemStack .getAmount () == 1 && setUnbreakable (itemStack )) {
101100 l .getWorld ().createExplosion (l , 0 );
102101 l .getWorld ().playSound (l , Sound .ENTITY_GENERIC_EXPLODE , 0.3F , 1 );
103102
104103 item .remove ();
105104 rune .remove ();
106105
107- setUnbreakable (itemStack );
108106 l .getWorld ().dropItemNaturally (l , itemStack );
109107
110108 p .sendMessage (ChatColor .LIGHT_PURPLE + "你的物品已经不可破坏了" );
@@ -127,16 +125,20 @@ private boolean findCompatibleItem(Player player, Entity entity) {
127125 return false ;
128126 }
129127
130- public static void setUnbreakable (@ Nullable ItemStack item ) {
131- if (item != null && item .getType () != Material .AIR ) {
132-
133- if (!isUnbreakable (item ) && item .hasItemMeta ()) {
134- ItemMeta meta = item .getItemMeta ();
128+ public static boolean setUnbreakable (@ Nullable ItemStack item ) {
129+ if (item == null || item .getType ().isAir () || isUnbreakable (item )) {
130+ return false ;
131+ }
135132
136- meta .setUnbreakable (true );
137- item .setItemMeta (meta );
138- }
133+ ItemMeta meta = item .getItemMeta ();
134+ // if no meta is returned, we cant proceed
135+ if (meta == null ) {
136+ return false ;
139137 }
138+
139+ meta .setUnbreakable (true );
140+ item .setItemMeta (meta );
141+ return true ;
140142 }
141143
142144 public static boolean isUnbreakable (@ Nullable ItemStack item ) {
0 commit comments