mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 17:07:43 +01:00
Add more ItemStack convenience stuffs
This commit is contained in:
@@ -1,14 +1,56 @@
|
|||||||
From e957ac37c9a7393b96fbc805c4c1a8f88c7e9940 Mon Sep 17 00:00:00 2001
|
From 85943cc20b759c76b1573e03fca687c1b4933dc2 Mon Sep 17 00:00:00 2001
|
||||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||||
Date: Sun, 15 Mar 2020 20:52:12 -0500
|
Date: Sun, 15 Mar 2020 20:52:12 -0500
|
||||||
Subject: [PATCH] Add ItemStack convenience methods for ItemMeta
|
Subject: [PATCH] Add ItemStack convenience methods
|
||||||
|
|
||||||
---
|
---
|
||||||
.../java/org/bukkit/inventory/ItemStack.java | 590 ++++++++++++++++++
|
src/main/java/org/bukkit/Material.java | 32 +
|
||||||
1 file changed, 590 insertions(+)
|
.../java/org/bukkit/inventory/ItemStack.java | 619 ++++++++++++++++++
|
||||||
|
2 files changed, 651 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
|
||||||
|
index 1f2dbd68c..f2be0d0ce 100644
|
||||||
|
--- a/src/main/java/org/bukkit/Material.java
|
||||||
|
+++ b/src/main/java/org/bukkit/Material.java
|
||||||
|
@@ -7995,4 +7995,36 @@ public enum Material implements Keyed {
|
||||||
|
// </editor-fold>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // Purpur start
|
||||||
|
+ public boolean isArmor() {
|
||||||
|
+ switch (this) {
|
||||||
|
+ // <editor-fold defaultstate="collapsed" desc="isarmor">
|
||||||
|
+ case LEATHER_BOOTS:
|
||||||
|
+ case LEATHER_CHESTPLATE:
|
||||||
|
+ case LEATHER_HELMET:
|
||||||
|
+ case LEATHER_LEGGINGS:
|
||||||
|
+ case CHAINMAIL_BOOTS:
|
||||||
|
+ case CHAINMAIL_CHESTPLATE:
|
||||||
|
+ case CHAINMAIL_HELMET:
|
||||||
|
+ case CHAINMAIL_LEGGINGS:
|
||||||
|
+ case IRON_BOOTS:
|
||||||
|
+ case IRON_CHESTPLATE:
|
||||||
|
+ case IRON_HELMET:
|
||||||
|
+ case IRON_LEGGINGS:
|
||||||
|
+ case GOLDEN_BOOTS:
|
||||||
|
+ case GOLDEN_CHESTPLATE:
|
||||||
|
+ case GOLDEN_HELMET:
|
||||||
|
+ case GOLDEN_LEGGINGS:
|
||||||
|
+ case DIAMOND_BOOTS:
|
||||||
|
+ case DIAMOND_CHESTPLATE:
|
||||||
|
+ case DIAMOND_HELMET:
|
||||||
|
+ case DIAMOND_LEGGINGS:
|
||||||
|
+ case TURTLE_HELMET:
|
||||||
|
+ return true;
|
||||||
|
+ default:
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
|
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||||
index cf8d77491..2c2ca7d97 100644
|
index cf8d77491..69ebfa11a 100644
|
||||||
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||||
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||||
@@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta;
|
@@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta;
|
||||||
@@ -30,7 +72,7 @@ index cf8d77491..2c2ca7d97 100644
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a stack of items.
|
* Represents a stack of items.
|
||||||
@@ -760,4 +772,582 @@ public class ItemStack implements Cloneable, ConfigurationSerializable {
|
@@ -760,4 +772,611 @@ public class ItemStack implements Cloneable, ConfigurationSerializable {
|
||||||
return itemMeta.hasItemFlag(flag);
|
return itemMeta.hasItemFlag(flag);
|
||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
@@ -604,12 +646,41 @@ index cf8d77491..2c2ca7d97 100644
|
|||||||
+ * @param amount Amount of durability to damage
|
+ * @param amount Amount of durability to damage
|
||||||
+ */
|
+ */
|
||||||
+ public void damage(int amount) {
|
+ public void damage(int amount) {
|
||||||
|
+ damage(amount, false);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Damages this item's durability by amount
|
||||||
|
+ *
|
||||||
|
+ * @param amount Amount of durability to damage
|
||||||
|
+ * @param ignoreUnbreaking Ignores unbreaking enchantment
|
||||||
|
+ */
|
||||||
|
+ public void damage(int amount, boolean ignoreUnbreaking) {
|
||||||
|
+ if (amount > 0) {
|
||||||
|
+ int unbreaking = getEnchantLevel(Enchantment.DURABILITY);
|
||||||
|
+ int reduce = 0;
|
||||||
|
+ for (int i = 0; unbreaking > 0 && i < amount; ++i) {
|
||||||
|
+ if (reduceDamage(java.util.concurrent.ThreadLocalRandom.current(), unbreaking)) {
|
||||||
|
+ ++reduce;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ amount -= reduce;
|
||||||
|
+ if (amount <= 0) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
+ ItemMeta itemMeta = getItemMeta();
|
+ ItemMeta itemMeta = getItemMeta();
|
||||||
+ Damageable damageable = (Damageable) itemMeta;
|
+ Damageable damageable = (Damageable) itemMeta;
|
||||||
+ damageable.setDamage(damageable.getDamage() + amount);
|
+ damageable.setDamage(damageable.getDamage() - amount);
|
||||||
+ setItemMeta(itemMeta);
|
+ setItemMeta(itemMeta);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ private boolean reduceDamage(java.util.Random random, int unbreaking) {
|
||||||
|
+ if (getType().isArmor()) {
|
||||||
|
+ return random.nextFloat() < 0.6F;
|
||||||
|
+ }
|
||||||
|
+ return random.nextInt(unbreaking + 1) > 0;
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ // Purpur end
|
+ // Purpur end
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user