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 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. * Do not use for any reason.
* *

View File

@@ -9,17 +9,32 @@ public enum ItemRarity {
/** /**
* White item name. * White item name.
*/ */
COMMON, COMMON(net.kyori.adventure.text.format.NamedTextColor.WHITE), // Paper
/** /**
* Yellow item name. * Yellow item name.
*/ */
UNCOMMON, UNCOMMON(net.kyori.adventure.text.format.NamedTextColor.YELLOW), // Paper
/** /**
* Aqua item name. * Aqua item name.
*/ */
RARE, RARE(net.kyori.adventure.text.format.NamedTextColor.AQUA), // Paper
/** /**
* Light purple item name. * 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() { public @NotNull String translationKey() {
return Bukkit.getUnsafe().getTranslationKey(this); 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 // Paper end
} }

View File

@@ -2418,4 +2418,13 @@ public interface ItemType extends Keyed, Translatable, net.kyori.adventure.trans
@Override @Override
@NotNull String getTranslationKey(); @NotNull String getTranslationKey();
// Paper end - add Translatable // 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
} }