mirror of
https://hub.spigotmc.org/stash/scm/spigot/spigot.git
synced 2025-09-18 21:33:01 +00:00
Add isUnbreakable and setUnbreakable to ItemMeta. Also fixes a bug where it doesn't show up on items
This commit is contained in:
parent
a791c555e7
commit
32e6d74a5f
3 changed files with 194 additions and 1 deletions
|
@ -0,0 +1,48 @@
|
|||
From df03345a3e6f685f6316a40ee0a8c8caa3c08934 Mon Sep 17 00:00:00 2001
|
||||
From: libraryaddict <redwarfare@live.com>
|
||||
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
|
||||
|
|
@ -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 <md_5@live.com.au>
|
||||
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
|
||||
}
|
||||
--
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
From 4897deeda9ecd38317041a94da0b0f0f54d5e0ea Mon Sep 17 00:00:00 2001
|
||||
From: libraryaddict <redwarfare@live.com>
|
||||
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<String> 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<Enchantment, Integer> 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<Enchantment, Integer> buildEnchantments(Map<String, Object> 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
|
||||
|
Loading…
Add table
Reference in a new issue