Merge branch 'master' into pre/1.13

* master:
  Fix ItemStack.removeEnchantment returning wrong value
This commit is contained in:
Aikar
2018-08-04 01:22:57 -04:00
3 changed files with 17 additions and 20 deletions

View File

@@ -13,7 +13,7 @@ starting point for future additions in this area.
Fixes GH-559 Fixes GH-559
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
index 1df2b463a..abdbd4989 100644 index 35eb3181dd..a69f98cd63 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
@@ -0,0 +0,0 @@ public final class CraftItemFactory implements ItemFactory { @@ -0,0 +0,0 @@ public final class CraftItemFactory implements ItemFactory {
@@ -26,7 +26,7 @@ index 1df2b463a..abdbd4989 100644
case CHEST: case CHEST:
case TRAPPED_CHEST: case TRAPPED_CHEST:
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
index e2699564a..aad380c3b 100644 index 8c0409797e..83f89a2365 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
@@ -0,0 +0,0 @@ public final class CraftItemStack extends ItemStack { @@ -0,0 +0,0 @@ public final class CraftItemStack extends ItemStack {
@@ -40,7 +40,7 @@ index e2699564a..aad380c3b 100644
case TRAPPED_CHEST: case TRAPPED_CHEST:
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java
new file mode 100644 new file mode 100644
index 000000000..0e8acf12e index 0000000000..0e8acf12e4
--- /dev/null --- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java
@@ -0,0 +0,0 @@ @@ -0,0 +0,0 @@
@@ -354,7 +354,7 @@ index 000000000..0e8acf12e
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
index f21c1e846..a5fcf6bd5 100644 index 94b19d1095..683593a0b4 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable { @@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable {
@@ -383,7 +383,7 @@ index f21c1e846..a5fcf6bd5 100644
} }
return HANDLED_TAGS; return HANDLED_TAGS;
diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
index f66cc81d9..eb6cf1bb3 100644 index f66cc81d9e..eb6cf1bb33 100644
--- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java --- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
+++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java +++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
@@ -0,0 +0,0 @@ import static org.hamcrest.Matchers.*; @@ -0,0 +0,0 @@ import static org.hamcrest.Matchers.*;

View File

@@ -11,7 +11,7 @@ Returns true if getDamage() == 0 or has damage tag or other tag is set.
Check the `ItemMetaTest#testTaggedButNotMeta` method to see how this method behaves. Check the `ItemMetaTest#testTaggedButNotMeta` method to see how this method behaves.
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
index 5f3331de13..ae21780964 100644 index 8ca161f0ed..e9bef85c8b 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
@@ -0,0 +0,0 @@ public final class CraftItemStack extends ItemStack { @@ -0,0 +0,0 @@ public final class CraftItemStack extends ItemStack {

View File

@@ -78,7 +78,7 @@ index 0c54eaa529..c7ef9c6890 100644
public boolean hasEnchantments() { public boolean hasEnchantments() {
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
index f4672b9a48..e2699564af 100644 index f4672b9a48..8c0409797e 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
@@ -0,0 +0,0 @@ import static org.bukkit.craftbukkit.inventory.CraftMetaItem.ENCHANTMENTS; @@ -0,0 +0,0 @@ import static org.bukkit.craftbukkit.inventory.CraftMetaItem.ENCHANTMENTS;
@@ -148,7 +148,13 @@ index f4672b9a48..e2699564af 100644
- NBTTagList list = getEnchantmentList(handle), listCopy; - NBTTagList list = getEnchantmentList(handle), listCopy;
- if (list == null) { - if (list == null) {
- return 0; - return 0;
- } + // Paper start - replace entire method
+ final ItemMeta itemMeta = getItemMeta();
+ int level = itemMeta.getEnchantLevel(ench);
+ if (level > 0) {
+ itemMeta.removeEnchant(ench);
+ setItemMeta(itemMeta);
}
- int index = Integer.MIN_VALUE; - int index = Integer.MIN_VALUE;
- int level = Integer.MIN_VALUE; - int level = Integer.MIN_VALUE;
- int size = list.size(); - int size = list.size();
@@ -170,17 +176,9 @@ index f4672b9a48..e2699564af 100644
- handle.getTag().remove(ENCHANTMENTS.NBT); - handle.getTag().remove(ENCHANTMENTS.NBT);
- if (handle.getTag().isEmpty()) { - if (handle.getTag().isEmpty()) {
- handle.setTag(null); - handle.setTag(null);
+ // Paper start - replace entire method, maintain backwards compat of returning previous level. - }
+ final ItemMeta itemMeta = getItemMeta();
+ final Iterator<Enchantment> iterator = itemMeta.getEnchants().keySet().iterator();
+ for (int i = 0; iterator.hasNext(); i++) {
+ if (iterator.next().equals(ench)) {
+ itemMeta.removeEnchant(ench);
+ setItemMeta(itemMeta);
+ return i;
}
- return level; - return level;
} - }
- -
- // This is workaround for not having an index removal - // This is workaround for not having an index removal
- listCopy = new NBTTagList(); - listCopy = new NBTTagList();
@@ -191,9 +189,8 @@ index f4672b9a48..e2699564af 100644
- } - }
- handle.getTag().set(ENCHANTMENTS.NBT, listCopy); - handle.getTag().set(ENCHANTMENTS.NBT, listCopy);
- -
- return level; return level;
+ // Paper end + // Paper end
+ return 0;
} }
@Override @Override