From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic 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 colors, @NotNull ImmutableList 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 SHIELD = getItemType("shield"); + ItemType.Typed SHIELD = getItemType("shield"); // Paper - update shield to its new meta ItemType.Typed TOTEM_OF_UNDYING = getItemType("totem_of_undying"); ItemType.Typed SHULKER_SHELL = getItemType("shulker_shell"); ItemType.Typed 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 + *

+ * 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. *