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/CompassMeta.java b/src/main/java/org/bukkit/inventory/meta/CompassMeta.java index 5040ab6190b41442986d2a734a8e782df0eab2f6..48bac38469ce3c5b2e59ad115375e7e5a2417da7 100644 --- a/src/main/java/org/bukkit/inventory/meta/CompassMeta.java +++ b/src/main/java/org/bukkit/inventory/meta/CompassMeta.java @@ -28,7 +28,8 @@ public interface CompassMeta extends ItemMeta { /** * Sets the location this lodestone compass will point to. * - * @param lodestone new location or null to clear + * @param lodestone new location or null to clear the targeted location + * @see #clearLodestone() to reset the compass to a normal compass */ void setLodestone(@Nullable Location lodestone); @@ -49,9 +50,25 @@ public interface CompassMeta extends ItemMeta { * location. * * @param tracked new tracked status + * @see #clearLodestone() to reset the compass to a normal compass */ void setLodestoneTracked(boolean tracked); + // Paper start - Add more lodestone compass methods + /** + * Checks if this compass is considered a lodestone compass. + * @see #hasLodestone() to check if a position is being tracked + * @see #isLodestoneTracked() to check if it verifies the position is a lodestone + */ + boolean isLodestoneCompass(); + + /** + * Reset this compass to a normal compass, removing any tracked + * location. + */ + void clearLodestone(); + // Paper end - Add more lodestone compass methods + @Override CompassMeta clone(); } 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/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. *