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;
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;

View file

@ -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();
}

View file

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

View file

@ -386,7 +386,7 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
/**
* Sets the enchantable. Higher values allow higher enchantments.
*
* @param enchantable enchantable value
* @param enchantable enchantable value, must be positive
*/
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.
* 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.
*