diff --git a/Bukkit-Patches/0030-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch b/Bukkit-Patches/0030-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch new file mode 100644 index 00000000..fe73c0c8 --- /dev/null +++ b/Bukkit-Patches/0030-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch @@ -0,0 +1,48 @@ +From df03345a3e6f685f6316a40ee0a8c8caa3c08934 Mon Sep 17 00:00:00 2001 +From: libraryaddict +Date: Fri, 22 Aug 2014 05:31:04 -0400 +Subject: [PATCH] Added isUnbreakable and setUnbreakable to ItemMeta + + +diff --git a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java +index 397ba11..9ae3e4c 100644 +--- a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java ++++ b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java +@@ -124,6 +124,34 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable { + */ + boolean hasConflictingEnchant(Enchantment ench); + ++ // Spigot start ++ public class Spigot ++ { ++ ++ /** ++ * Sets the unbreakable tag ++ * ++ * @param unbreakable true if set unbreakable ++ */ ++ public void setUnbreakable(boolean unbreakable) ++ { ++ throw new UnsupportedOperationException( "Not supported yet." ); ++ } ++ ++ /** ++ * Return if the unbreakable tag is true ++ * ++ * @return true if the unbreakable tag is true ++ */ ++ public boolean isUnbreakable() ++ { ++ throw new UnsupportedOperationException( "Not supported yet." ); ++ } ++ } ++ ++ Spigot spigot(); ++ // Spigot end ++ + @SuppressWarnings("javadoc") + ItemMeta clone(); + } +-- +1.9.1 + diff --git a/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch b/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch index 3a0c9634..c233fbf8 100644 --- a/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch +++ b/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch @@ -1,4 +1,4 @@ -From c521b6fccf4c7e0bc4a9e1480394a6720eb79222 Mon Sep 17 00:00:00 2001 +From 0a7ebe2d58f48601146a38caf4f782686e3116cb Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 2 Jun 2013 15:10:56 +1000 Subject: [PATCH] Skeleton API Implementations @@ -82,6 +82,27 @@ index bbf310b..da0c78e 100644 + { + return spigot; + } ++ // Spigot end + } +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +index c9738c4..32d4a67 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +@@ -665,4 +665,16 @@ class CraftMetaItem implements ItemMeta, Repairable { + public final String toString() { + return SerializableMeta.classMap.get(getClass()) + "_META:" + serialize(); // TODO: cry + } ++ ++ // Spigot start ++ private final Spigot spigot = new Spigot() ++ { ++ }; ++ ++ @Override ++ public Spigot spigot() ++ { ++ return spigot; ++ } + // Spigot end } -- diff --git a/CraftBukkit-Patches/0176-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch b/CraftBukkit-Patches/0176-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch new file mode 100644 index 00000000..288c1d9b --- /dev/null +++ b/CraftBukkit-Patches/0176-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch @@ -0,0 +1,124 @@ +From 4897deeda9ecd38317041a94da0b0f0f54d5e0ea Mon Sep 17 00:00:00 2001 +From: libraryaddict +Date: Fri, 22 Aug 2014 05:35:16 -0400 +Subject: [PATCH] Added isUnbreakable and setUnbreakable to ItemMeta + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +index 7a1536f..2275eb9 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +@@ -201,6 +201,7 @@ class CraftMetaItem implements ItemMeta, Repairable { + static final ItemMetaKey ATTRIBUTES_UUID_HIGH = new ItemMetaKey("UUIDMost"); + @Specific(Specific.To.NBT) + static final ItemMetaKey ATTRIBUTES_UUID_LOW = new ItemMetaKey("UUIDLeast"); ++ static final ItemMetaKey UNBREAKABLE = new ItemMetaKey("Unbreakable"); // Spigot + + private String displayName; + private List lore; +@@ -226,6 +227,7 @@ class CraftMetaItem implements ItemMeta, Repairable { + + this.repairCost = meta.repairCost; + this.attributes = meta.attributes; ++ spigot.setUnbreakable( meta.spigot.isUnbreakable() ); // Spigot + } + + CraftMetaItem(NBTTagCompound tag) { +@@ -418,6 +420,12 @@ class CraftMetaItem implements ItemMeta, Repairable { + } else { + attributes = null; + } ++ // Spigot start ++ if ( tag.hasKey( UNBREAKABLE.NBT ) ) ++ { ++ spigot.setUnbreakable( tag.getBoolean( UNBREAKABLE.NBT ) ); ++ } ++ // Spigot end + } + + static Map buildEnchantments(NBTTagCompound tag, ItemMetaKey key) { +@@ -458,6 +466,7 @@ class CraftMetaItem implements ItemMeta, Repairable { + } + + attributes = null; ++ spigot.setUnbreakable( SerializableMeta.getObject( Boolean.class, map, UNBREAKABLE.BUKKIT, true ) ); // Spigot + } + + static Map buildEnchantments(Map map, ItemMetaKey key) { +@@ -490,6 +499,13 @@ class CraftMetaItem implements ItemMeta, Repairable { + + applyEnchantments(enchantments, itemTag, ENCHANTMENTS); + ++ // Spigot start ++ if ( spigot().isUnbreakable() ) ++ { ++ itemTag.setBoolean( UNBREAKABLE.NBT, true ); ++ } ++ // Spigot end ++ + if (hasRepairCost()) { + itemTag.setInt(REPAIR.NBT, repairCost); + } +@@ -548,7 +564,7 @@ class CraftMetaItem implements ItemMeta, Repairable { + + @Overridden + boolean isEmpty() { +- return !(hasDisplayName() || hasEnchants() || hasLore() || hasAttributes() || hasRepairCost()); ++ return !(hasDisplayName() || hasEnchants() || hasLore() || hasAttributes() || hasRepairCost() || spigot().isUnbreakable()); // Spigot + } + + public String getDisplayName() { +@@ -672,7 +688,7 @@ class CraftMetaItem implements ItemMeta, Repairable { + && (this.hasEnchants() ? that.hasEnchants() && this.enchantments.equals(that.enchantments) : !that.hasEnchants()) + && (this.hasLore() ? that.hasLore() && this.lore.equals(that.lore) : !that.hasLore()) + && (this.hasAttributes() ? that.hasAttributes() && this.attributes.equals(that.attributes) : !that.hasAttributes()) +- && (this.hasRepairCost() ? that.hasRepairCost() && this.repairCost == that.repairCost : !that.hasRepairCost()); ++ && (this.hasRepairCost() ? that.hasRepairCost() && this.repairCost == that.repairCost : !that.hasRepairCost()) && this.spigot.isUnbreakable() == that.spigot.isUnbreakable(); // Spigot + } + + /** +@@ -698,6 +714,7 @@ class CraftMetaItem implements ItemMeta, Repairable { + hash = 61 * hash + (hasEnchants() ? this.enchantments.hashCode() : 0); + hash = 61 * hash + (hasAttributes() ? this.attributes.hashCode() : 0); + hash = 61 * hash + (hasRepairCost() ? this.repairCost : 0); ++ hash = 61 * hash + (spigot().isUnbreakable() ? 1231 : 1237); // Spigot + return hash; + } + +@@ -741,6 +758,13 @@ class CraftMetaItem implements ItemMeta, Repairable { + builder.put(REPAIR.BUKKIT, repairCost); + } + ++ // Spigot start ++ if ( spigot().isUnbreakable() ) ++ { ++ builder.put( UNBREAKABLE.BUKKIT, true ); ++ } ++ // Spigot end ++ + return builder; + } + +@@ -803,6 +827,19 @@ class CraftMetaItem implements ItemMeta, Repairable { + // Spigot start + private final Spigot spigot = new Spigot() + { ++ private boolean unbreakable; ++ ++ @Override ++ public void setUnbreakable(boolean setUnbreakable) ++ { ++ unbreakable = setUnbreakable; ++ } ++ ++ @Override ++ public boolean isUnbreakable() ++ { ++ return unbreakable; ++ } + }; + + @Override +-- +1.9.1 +