mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37: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>
|
||||
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 ++++++++++++++++++
|
||||
1 file changed, 590 insertions(+)
|
||||
src/main/java/org/bukkit/Material.java | 32 +
|
||||
.../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
|
||||
index cf8d77491..2c2ca7d97 100644
|
||||
index cf8d77491..69ebfa11a 100644
|
||||
--- a/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;
|
||||
@@ -30,7 +72,7 @@ index cf8d77491..2c2ca7d97 100644
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
// Paper end
|
||||
@@ -604,12 +646,41 @@ index cf8d77491..2c2ca7d97 100644
|
||||
+ * @param amount Amount of durability to damage
|
||||
+ */
|
||||
+ 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();
|
||||
+ Damageable damageable = (Damageable) itemMeta;
|
||||
+ damageable.setDamage(damageable.getDamage() + amount);
|
||||
+ damageable.setDamage(damageable.getDamage() - amount);
|
||||
+ 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
|
||||
}
|
||||
Reference in New Issue
Block a user