From 298ab846c126cb5a3a76ac883c614498cc4aaace Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 12 Jan 2013 17:05:05 +0000 Subject: Don't extend ItemStack --- Essentials/src/com/earth2me/essentials/Kit.java | 8 ++++---- Essentials/src/com/earth2me/essentials/MetaItemStack.java | 6 +++--- .../com/earth2me/essentials/commands/Commandenchant.java | 11 +++++++---- .../src/com/earth2me/essentials/commands/Commandgive.java | 13 ++++++++----- .../src/com/earth2me/essentials/commands/Commanditem.java | 11 +++++++---- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Kit.java b/Essentials/src/com/earth2me/essentials/Kit.java index b2b100553..35b105612 100644 --- a/Essentials/src/com/earth2me/essentials/Kit.java +++ b/Essentials/src/com/earth2me/essentials/Kit.java @@ -116,24 +116,24 @@ public class Kit final String[] parts = d.split(" "); final ItemStack parseStack = ess.getItemDb().get(parts[0], parts.length > 1 ? Integer.parseInt(parts[1]) : 1); - final MetaItemStack stack = new MetaItemStack(parseStack); + final MetaItemStack metaStack = new MetaItemStack(parseStack); if (parts.length > 2) { for (int i = 2; i < parts.length; i++) { - stack.addStringEnchantment(null, allowUnsafe, parts[i]); + metaStack.addStringEnchantment(null, allowUnsafe, parts[i]); } } final Map overfilled; if (user.isAuthorized("essentials.oversizedstacks")) { - overfilled = InventoryWorkaround.addOversizedItems(user.getInventory(), ess.getSettings().getOversizedStackSize(), stack.getBase()); + overfilled = InventoryWorkaround.addOversizedItems(user.getInventory(), ess.getSettings().getOversizedStackSize(), metaStack.getItemStack()); } else { - overfilled = InventoryWorkaround.addItems(user.getInventory(), stack.getBase()); + overfilled = InventoryWorkaround.addItems(user.getInventory(), metaStack.getItemStack()); } for (ItemStack itemStack : overfilled.values()) { diff --git a/Essentials/src/com/earth2me/essentials/MetaItemStack.java b/Essentials/src/com/earth2me/essentials/MetaItemStack.java index 9aa064590..cf4aa70ec 100644 --- a/Essentials/src/com/earth2me/essentials/MetaItemStack.java +++ b/Essentials/src/com/earth2me/essentials/MetaItemStack.java @@ -9,17 +9,17 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.EnchantmentStorageMeta; -public class MetaItemStack extends ItemStack +public class MetaItemStack { private final transient Pattern splitPattern = Pattern.compile("[:+',;.]"); private final ItemStack stack; public MetaItemStack(final ItemStack stack) { - this.stack = stack; + this.stack = stack.clone(); } - public ItemStack getBase() + public ItemStack getItemStack() { return stack; } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java b/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java index 461631282..663652436 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java @@ -11,6 +11,7 @@ import java.util.Set; import java.util.TreeSet; import org.bukkit.Server; import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemStack; public class Commandenchant extends EssentialsCommand @@ -24,7 +25,7 @@ public class Commandenchant extends EssentialsCommand @Override protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - final MetaItemStack stack = new MetaItemStack(user.getItemInHand()); + final ItemStack stack = user.getItemInHand(); if (stack == null) { throw new Exception(_("nothingInHand")); @@ -58,11 +59,13 @@ public class Commandenchant extends EssentialsCommand } final boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments() && user.isAuthorized("essentials.enchant.allowunsafe"); - final Enchantment enchantment = stack.getEnchantment(user, args[0]); - stack.addEnchantment(user, allowUnsafe, enchantment, level); + + final MetaItemStack metaStack = new MetaItemStack(stack); + final Enchantment enchantment = metaStack.getEnchantment(user, args[0]); + metaStack.addEnchantment(user, allowUnsafe, enchantment, level); - user.getInventory().setItemInHand(stack.getBase()); + user.getInventory().setItemInHand(metaStack.getItemStack()); user.updateInventory(); final String enchantmentName = enchantment.getName().toLowerCase(Locale.ENGLISH); if (level == 0) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java index 0fabf3afc..c80ff0d1b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java @@ -10,6 +10,7 @@ import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; public class Commandgive extends EssentialsCommand @@ -27,7 +28,7 @@ public class Commandgive extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final MetaItemStack stack = new MetaItemStack(ess.getItemDb().get(args[1])); + ItemStack stack = ess.getItemDb().get(args[1]); final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); if (sender instanceof Player @@ -70,7 +71,8 @@ public class Commandgive extends EssentialsCommand if (args.length > 3) { - boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments(); + MetaItemStack metaStack = new MetaItemStack(stack); + boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments(); if (allowUnsafe && sender instanceof Player && !ess.getUser(sender).isAuthorized("essentials.enchant.allowunsafe")) { allowUnsafe = false; @@ -78,8 +80,9 @@ public class Commandgive extends EssentialsCommand for (int i = Util.isInt(args[3]) ? 4 : 3; i < args.length; i++) { - stack.addStringEnchantment(null, allowUnsafe, args[i]); + metaStack.addStringEnchantment(null, allowUnsafe, args[i]); } + stack = metaStack.getItemStack(); } if (stack.getType() == Material.AIR) @@ -91,11 +94,11 @@ public class Commandgive extends EssentialsCommand sender.sendMessage(_("giveSpawn", stack.getAmount(), itemName, giveTo.getDisplayName())); if (giveTo.isAuthorized("essentials.oversizedstacks")) { - InventoryWorkaround.addOversizedItems(giveTo.getInventory(), ess.getSettings().getOversizedStackSize(), stack.getBase()); + InventoryWorkaround.addOversizedItems(giveTo.getInventory(), ess.getSettings().getOversizedStackSize(), stack); } else { - InventoryWorkaround.addItems(giveTo.getInventory(), stack.getBase()); + InventoryWorkaround.addItems(giveTo.getInventory(), stack); } giveTo.updateInventory(); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java index 096da99d5..0acd1f60f 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java @@ -7,6 +7,7 @@ import com.earth2me.essentials.craftbukkit.InventoryWorkaround; import java.util.Locale; import org.bukkit.Material; import org.bukkit.Server; +import org.bukkit.inventory.ItemStack; public class Commanditem extends EssentialsCommand @@ -23,7 +24,7 @@ public class Commanditem extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final MetaItemStack stack = new MetaItemStack(ess.getItemDb().get(args[0])); + ItemStack stack = ess.getItemDb().get(args[0]); final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); if (ess.getSettings().permissionBasedItemSpawn() @@ -56,12 +57,14 @@ public class Commanditem extends EssentialsCommand } if (args.length > 2) { + MetaItemStack metaStack = new MetaItemStack(stack); final boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments() && user.isAuthorized("essentials.enchant.allowunsafe"); for (int i = 2; i < args.length; i++) { - stack.addStringEnchantment(null, allowUnsafe, args[i]); + metaStack.addStringEnchantment(null, allowUnsafe, args[i]); } + stack = metaStack.getItemStack(); } @@ -74,11 +77,11 @@ public class Commanditem extends EssentialsCommand user.sendMessage(_("itemSpawn", stack.getAmount(), displayName)); if (user.isAuthorized("essentials.oversizedstacks")) { - InventoryWorkaround.addOversizedItems(user.getInventory(), ess.getSettings().getOversizedStackSize(), stack.getBase()); + InventoryWorkaround.addOversizedItems(user.getInventory(), ess.getSettings().getOversizedStackSize(), stack); } else { - InventoryWorkaround.addItems(user.getInventory(), stack.getBase()); + InventoryWorkaround.addItems(user.getInventory(), stack); } user.updateInventory(); } -- cgit v1.2.3