Paper/patches/api/0472-General-ItemMeta-fixes.patch
Jake Potrebic 0e7361704a
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#11284)
Updated Upstream (Bukkit/CraftBukkit/Spigot)

Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
4068c6aa PR-1053: Change docs for max power in FireworkMeta
6b3c241b SPIGOT-7783, SPIGOT-7784, PR-1051: Add Trial Vault & Spawner event API
5fe300ec PR-1052: Fix broken links and minor improvement for checkstyle.xml

CraftBukkit Changes:
7548afcf2 SPIGOT-7872: Fix crash with event-modified teleports
93480d5d6 SPIGOT-7868, PR-1463: Fix default and max power in FireworkMeta
5060d1a84 SPIGOT-7783, SPIGOT-7784, PR-1460: Add Trial Vault & Spawner event API
11dfcae71 PR-1462: Fix broken links and minor improvement for checkstyle.xml

Spigot Changes:
ca581228 Rebuild patches
2024-08-17 12:39:11 -07:00

136 lines
5.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Tue, 28 May 2024 19:59:01 -0700
Subject: [PATCH] General ItemMeta fixes
diff --git a/src/main/java/org/bukkit/FireworkEffect.java b/src/main/java/org/bukkit/FireworkEffect.java
index 637fa73d4366c2d88e2716e5c8d3465706d788a7..0f03c546ecdd6383fb36a362d18d6fb57f2ccfee 100644
--- a/src/main/java/org/bukkit/FireworkEffect.java
+++ b/src/main/java/org/bukkit/FireworkEffect.java
@@ -322,9 +322,7 @@ public final class FireworkEffect implements ConfigurationSerializable {
private String string = null;
FireworkEffect(boolean flicker, boolean trail, @NotNull ImmutableList<Color> colors, @NotNull ImmutableList<Color> fadeColors, @NotNull Type type) {
- if (colors.isEmpty()) {
- throw new IllegalStateException("Cannot make FireworkEffect without any color");
- }
+ // Paper - can have empty colors
this.flicker = flicker;
this.trail = trail;
this.colors = colors;
diff --git a/src/main/java/org/bukkit/inventory/ItemType.java b/src/main/java/org/bukkit/inventory/ItemType.java
index a6d1dde422de98f178c0c9add99e01203a35e5cb..01ec84248a681180088fb1d7d22b80f8572b0305 100644
--- a/src/main/java/org/bukkit/inventory/ItemType.java
+++ b/src/main/java/org/bukkit/inventory/ItemType.java
@@ -31,6 +31,7 @@ import org.bukkit.inventory.meta.MapMeta;
import org.bukkit.inventory.meta.MusicInstrumentMeta;
import org.bukkit.inventory.meta.OminousBottleMeta;
import org.bukkit.inventory.meta.PotionMeta;
+import org.bukkit.inventory.meta.ShieldMeta;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.inventory.meta.SpawnEggMeta;
import org.bukkit.inventory.meta.SuspiciousStewMeta;
@@ -1893,7 +1894,7 @@ public interface ItemType extends Keyed, Translatable, net.kyori.adventure.trans
/**
* ItemMeta: {@link BlockStateMeta}
*/
- ItemType.Typed<BlockStateMeta> SHIELD = getItemType("shield");
+ ItemType.Typed<ShieldMeta> SHIELD = getItemType("shield"); // Paper - update shield to its new meta
ItemType.Typed<ItemMeta> TOTEM_OF_UNDYING = getItemType("totem_of_undying");
ItemType.Typed<ItemMeta> SHULKER_SHELL = getItemType("shulker_shell");
ItemType.Typed<ItemMeta> IRON_NUGGET = getItemType("iron_nugget");
diff --git a/src/main/java/org/bukkit/inventory/meta/Damageable.java b/src/main/java/org/bukkit/inventory/meta/Damageable.java
index ff6818b6d9e0207eafdd749928f33aeac3f27191..992f39da07bafe9769effaa7dc6adc018c89329d 100644
--- a/src/main/java/org/bukkit/inventory/meta/Damageable.java
+++ b/src/main/java/org/bukkit/inventory/meta/Damageable.java
@@ -9,14 +9,17 @@ import org.jetbrains.annotations.Nullable;
public interface Damageable extends ItemMeta {
/**
- * Checks to see if this item has damage
+ * Checks to see if this item has damage greater than 0.
*
- * @return true if this has damage
+ * @return true if this has damage > 0
*/
boolean hasDamage();
/**
* Gets the damage
+ * <p>
+ * Call {@link #hasDamageValue()} to be sure
+ * a damage value is set.
*
* @return the damage
*/
@@ -26,9 +29,27 @@ public interface Damageable extends ItemMeta {
* Sets the damage
*
* @param damage item damage
+ * @see #resetDamage() to reset and clear the damage data component
*/
void setDamage(int damage);
+ // Paper start
+ /**
+ * Checks if any damage value, including 0,
+ * is set on this meta.
+ *
+ * @return true if any value is set
+ */
+ boolean hasDamageValue();
+
+ /**
+ * Clears the damage component from the meta. Differs
+ * from {@code setDamage(0)} in that it removes the component
+ * instead of adding the component with a value of 0.
+ */
+ void resetDamage();
+ // Paper end
+
/**
* Checks to see if this item has a maximum amount of damage.
*
diff --git a/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java b/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java
index 9bd15803cd3526da951ed197305a1b9385305927..5833c4c16b08a0f338a5cd7c0011e82eeda222c2 100644
--- a/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java
+++ b/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java
@@ -75,10 +75,20 @@ public interface FireworkMeta extends ItemMeta {
*/
boolean hasEffects();
+ // Paper start - add hasPower
+ /**
+ * Checks if power is defined on this meta.
+ *
+ * @return true if there is a power specified
+ */
+ boolean hasPower();
+ // Paper end - add hasPower
+
/**
* Gets the approximate height the firework will fly.
*
* @return approximate flight height of the firework.
+ * @see #hasPower()
*/
int getPower();
diff --git a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
index 1a4260b00b193b94ce4b1b2954644f4e41baff4c..5d5fcb2720b62e47d47f441032c4de02574b051a 100644
--- a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
+++ b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
@@ -673,8 +673,9 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
/**
* Set all {@link Attribute}s and their {@link AttributeModifier}s.
- * To clear all currently set Attributes and AttributeModifiers use
- * null or an empty Multimap.
+ * To clear all custom attribute modifiers, use {@code null}. To set
+ * no modifiers (which will override the default modifiers), use an
+ * empty map.
* If not null nor empty, this will filter all entries that are not-null
* and add them to the ItemStack.
*