From 399b22899928986657a40d39870318694f9d41b0 Mon Sep 17 00:00:00 2001 From: Andreas Troelsen Date: Sun, 23 Sep 2018 15:44:54 +0200 Subject: [PATCH] Use unbreakable item meta flag for unbreakable weapons and armor. This changes how unbreakable items work in MobArena. It removes the legacy "repair logic" and replaces it with the item meta unbreakable flag. This approach should work all the same, except now if weapons and armor in class chests have special durability values, these are preserved in the cloning. This should make MobArena compatible with plugins that depend on special durability values, such as QualityArmory. --- .../com/garbagemule/MobArena/ArenaImpl.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/garbagemule/MobArena/ArenaImpl.java b/src/main/java/com/garbagemule/MobArena/ArenaImpl.java index d0b3253..0c910f3 100644 --- a/src/main/java/com/garbagemule/MobArena/ArenaImpl.java +++ b/src/main/java/com/garbagemule/MobArena/ArenaImpl.java @@ -1139,6 +1139,23 @@ public class ArenaImpl implements Arena arenaClass.grantPotionEffects(p); arenaClass.grantLobbyPermissions(p); + if (arenaClass.hasUnbreakableWeapons()) { + PlayerInventory inv = p.getInventory(); + for (ItemStack stack : inv.getContents()) { + if (ArenaClass.isWeapon(stack)) { + makeUnbreakable(stack); + } + } + } + if (arenaClass.hasUnbreakableArmor()) { + PlayerInventory inv = p.getInventory(); + for (ItemStack stack : inv.getArmorContents()) { + if (stack != null && ArmorType.getType(stack) != null) { + makeUnbreakable(stack); + } + } + } + autoReady(p); } @@ -1186,9 +1203,9 @@ public class ArenaImpl implements Arena makeUnbreakable(stack); } switch (type) { - case CHESTPLATE: chestplate = contents[i].clone(); break; - case LEGGINGS: leggings = contents[i].clone(); break; - case BOOTS: boots = contents[i].clone(); break; + case CHESTPLATE: chestplate = stack; break; + case LEGGINGS: leggings = stack; break; + case BOOTS: boots = stack; break; default: break; } contents[i] = null;