General ItemMeta fixes

This commit is contained in:
Jake Potrebic 2024-05-28 19:59:01 -07:00
parent 236fa2126f
commit f09feba0f4
4 changed files with 46 additions and 9 deletions

View file

@ -322,9 +322,7 @@ public final class FireworkEffect implements ConfigurationSerializable {
private String string = null; private String string = null;
FireworkEffect(boolean flicker, boolean trail, @NotNull ImmutableList<Color> colors, @NotNull ImmutableList<Color> fadeColors, @NotNull Type type) { FireworkEffect(boolean flicker, boolean trail, @NotNull ImmutableList<Color> colors, @NotNull ImmutableList<Color> fadeColors, @NotNull Type type) {
if (colors.isEmpty()) { // Paper - can have empty colors
throw new IllegalStateException("Cannot make FireworkEffect without any color");
}
this.flicker = flicker; this.flicker = flicker;
this.trail = trail; this.trail = trail;
this.colors = colors; this.colors = colors;

View file

@ -28,7 +28,8 @@ public interface CompassMeta extends ItemMeta {
/** /**
* Sets the location this lodestone compass will point to. * 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); void setLodestone(@Nullable Location lodestone);
@ -49,9 +50,25 @@ public interface CompassMeta extends ItemMeta {
* location. * location.
* *
* @param tracked new tracked status * @param tracked new tracked status
* @see #clearLodestone() to reset the compass to a normal compass
*/ */
void setLodestoneTracked(boolean tracked); 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 @Override
CompassMeta clone(); CompassMeta clone();
} }

View file

@ -9,14 +9,17 @@ import org.jetbrains.annotations.Nullable;
public interface Damageable extends ItemMeta { 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(); boolean hasDamage();
/** /**
* Gets the damage * Gets the damage
* <p>
* Call {@link #hasDamageValue()} to be sure
* a damage value is set.
* *
* @return the damage * @return the damage
*/ */
@ -26,9 +29,27 @@ public interface Damageable extends ItemMeta {
* Sets the damage * Sets the damage
* *
* @param damage item damage * @param damage item damage
* @see #resetDamage() to reset and clear the damage data component
*/ */
void setDamage(int damage); 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. * Checks to see if this item has a maximum amount of damage.
* *

View file

@ -386,7 +386,7 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
/** /**
* Sets the enchantable. Higher values allow higher enchantments. * Sets the enchantable. Higher values allow higher enchantments.
* *
* @param enchantable enchantable value * @param enchantable enchantable value, must be positive
*/ */
void setEnchantable(@Nullable Integer enchantable); void setEnchantable(@Nullable Integer enchantable);
@ -930,8 +930,9 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
/** /**
* Set all {@link Attribute}s and their {@link AttributeModifier}s. * Set all {@link Attribute}s and their {@link AttributeModifier}s.
* To clear all currently set Attributes and AttributeModifiers use * To clear all custom attribute modifiers, use {@code null}. To set
* null or an empty Multimap. * 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 * If not null nor empty, this will filter all entries that are not-null
* and add them to the ItemStack. * and add them to the ItemStack.
* *