Improve Item Rarity API

This commit is contained in:
Jake Potrebic 2021-03-12 17:09:40 -08:00
parent 07c1829d7f
commit 83c4827433
5 changed files with 87 additions and 4 deletions

View File

@ -0,0 +1,32 @@
package io.papermc.paper.inventory;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import org.jetbrains.annotations.NotNull;
/**
* @deprecated use {@link org.bukkit.inventory.ItemRarity} with {@link org.bukkit.inventory.meta.ItemMeta#getRarity()}
*/
@Deprecated(forRemoval = true, since = "1.20.5")
public enum ItemRarity {
COMMON(NamedTextColor.WHITE),
UNCOMMON(NamedTextColor.YELLOW),
RARE(NamedTextColor.AQUA),
EPIC(NamedTextColor.LIGHT_PURPLE);
TextColor color;
ItemRarity(TextColor color) {
this.color = color;
}
/**
* Gets the color formatting associated with the rarity.
* @return
*/
@NotNull
public TextColor getColor() {
return color;
}
}

View File

@ -4845,6 +4845,21 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
}
// Paper end - add Translatable
// Paper start - item rarity API
/**
* Returns the item rarity for the item. The Material <b>MUST</b> be an Item not a block.
* Use {@link #isItem()} before this.
*
* @return the item rarity
* @deprecated use {@link org.bukkit.inventory.meta.ItemMeta#hasRarity()} and {@link org.bukkit.inventory.meta.ItemMeta#getRarity()}
*/
@NotNull
@Deprecated(forRemoval = true, since = "1.20.5")
public io.papermc.paper.inventory.ItemRarity getItemRarity() {
return new org.bukkit.inventory.ItemStack(this).getRarity();
}
// Paper end - item rarity API
/**
* Do not use for any reason.
*

View File

@ -9,17 +9,32 @@ public enum ItemRarity {
/**
* White item name.
*/
COMMON,
COMMON(net.kyori.adventure.text.format.NamedTextColor.WHITE), // Paper
/**
* Yellow item name.
*/
UNCOMMON,
UNCOMMON(net.kyori.adventure.text.format.NamedTextColor.YELLOW), // Paper
/**
* Aqua item name.
*/
RARE,
RARE(net.kyori.adventure.text.format.NamedTextColor.AQUA), // Paper
/**
* Light purple item name.
*/
EPIC;
EPIC(net.kyori.adventure.text.format.NamedTextColor.LIGHT_PURPLE); // Paper
// Paper start - improve ItemRarity
private final net.kyori.adventure.text.format.NamedTextColor color;
ItemRarity(final net.kyori.adventure.text.format.NamedTextColor color) {
this.color = color;
}
/**
* Gets the color formatting associated with this rarity.
*
* @return the color
*/
public net.kyori.adventure.text.format.@org.jetbrains.annotations.NotNull TextColor color() {
return this.color;
}
// Paper end
}

View File

@ -994,5 +994,17 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
public @NotNull String translationKey() {
return Bukkit.getUnsafe().getTranslationKey(this);
}
/**
* Gets the item rarity of the itemstack. The rarity can change based on enchantments.
*
* @return the itemstack rarity
* @deprecated Use {@link ItemMeta#hasRarity()} and {@link ItemMeta#getRarity()}
*/
@NotNull
@Deprecated(forRemoval = true, since = "1.20.5")
public io.papermc.paper.inventory.ItemRarity getRarity() {
return io.papermc.paper.inventory.ItemRarity.valueOf(this.getItemMeta().getRarity().name());
}
// Paper end
}

View File

@ -2418,4 +2418,13 @@ public interface ItemType extends Keyed, Translatable, net.kyori.adventure.trans
@Override
@NotNull String getTranslationKey();
// Paper end - add Translatable
// Paper start - expand ItemRarity API
/**
* Returns the item rarity for the item.
*
* @return the item rarity (or null if none is set)
*/
@Nullable ItemRarity getItemRarity();
// Paper end - expand ItemRarity API
}