PaperMC/patches/api/Improve-Item-Rarity-API.patch

152 lines
5.5 KiB
Diff
Raw Normal View History

2021-06-11 14:02:28 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 12 Mar 2021 17:09:40 -0800
2024-04-27 01:43:59 +02:00
Subject: [PATCH] Improve Item Rarity API
2021-06-11 14:02:28 +02:00
diff --git a/src/main/java/io/papermc/paper/inventory/ItemRarity.java b/src/main/java/io/papermc/paper/inventory/ItemRarity.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/inventory/ItemRarity.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.inventory;
+
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextColor;
+import org.jetbrains.annotations.NotNull;
+
2024-04-27 01:43:59 +02:00
+/**
+ * @deprecated use {@link org.bukkit.inventory.ItemRarity} with {@link org.bukkit.inventory.meta.ItemMeta#getRarity()}
+ */
+@Deprecated(forRemoval = true, since = "1.20.5")
2021-06-11 14:02:28 +02:00
+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;
+ }
+}
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
2021-06-11 14:02:28 +02:00
}
// Paper end - add Translatable
+ // Paper start - item rarity API
2021-06-11 14:02:28 +02:00
+ /**
+ * 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
2024-04-27 01:43:59 +02:00
+ * @deprecated use {@link org.bukkit.inventory.meta.ItemMeta#hasRarity()} and {@link org.bukkit.inventory.meta.ItemMeta#getRarity()}
2021-06-11 14:02:28 +02:00
+ */
+ @NotNull
2024-04-27 01:43:59 +02:00
+ @Deprecated(forRemoval = true, since = "1.20.5")
2021-06-11 14:02:28 +02:00
+ public io.papermc.paper.inventory.ItemRarity getItemRarity() {
2024-04-27 01:43:59 +02:00
+ return new org.bukkit.inventory.ItemStack(this).getRarity();
2021-06-11 14:02:28 +02:00
+ }
+ // Paper end - item rarity API
+
2021-06-11 14:02:28 +02:00
/**
* Do not use for any reason.
*
2024-04-27 01:43:59 +02:00
diff --git a/src/main/java/org/bukkit/inventory/ItemRarity.java b/src/main/java/org/bukkit/inventory/ItemRarity.java
2021-06-11 14:02:28 +02:00
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
2024-04-27 01:43:59 +02:00
--- a/src/main/java/org/bukkit/inventory/ItemRarity.java
+++ b/src/main/java/org/bukkit/inventory/ItemRarity.java
@@ -0,0 +0,0 @@ public enum ItemRarity {
/**
* White item name.
2021-06-11 14:02:28 +02:00
*/
2024-04-27 01:43:59 +02:00
- 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;
+ }
2021-06-11 14:02:28 +02:00
+
+ /**
2024-04-27 01:43:59 +02:00
+ * Gets the color formatting associated with this rarity.
2021-06-11 14:02:28 +02:00
+ *
2024-04-27 01:43:59 +02:00
+ * @return the color
2021-06-11 14:02:28 +02:00
+ */
2024-04-27 01:43:59 +02:00
+ public net.kyori.adventure.text.format.@org.jetbrains.annotations.NotNull TextColor color() {
+ return this.color;
+ }
+ // Paper end
2021-06-11 14:02:28 +02:00
}
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -0,0 +0,0 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
public @NotNull String translationKey() {
2021-06-11 14:02:28 +02:00
return Bukkit.getUnsafe().getTranslationKey(this);
}
+
+ /**
2024-04-27 01:43:59 +02:00
+ * Gets the item rarity of the itemstack. The rarity can change based on enchantments.
2021-06-11 14:02:28 +02:00
+ *
+ * @return the itemstack rarity
2024-04-27 01:43:59 +02:00
+ * @deprecated Use {@link ItemMeta#hasRarity()} and {@link ItemMeta#getRarity()}
2021-06-11 14:02:28 +02:00
+ */
+ @NotNull
2024-04-27 01:43:59 +02:00
+ @Deprecated(forRemoval = true, since = "1.20.5")
2021-06-11 14:02:28 +02:00
+ public io.papermc.paper.inventory.ItemRarity getRarity() {
2024-04-27 01:43:59 +02:00
+ return io.papermc.paper.inventory.ItemRarity.valueOf(this.getItemMeta().getRarity().name());
2021-06-11 14:02:28 +02:00
+ }
// Paper end
}
2024-07-15 16:38:20 +02:00
diff --git a/src/main/java/org/bukkit/inventory/ItemType.java b/src/main/java/org/bukkit/inventory/ItemType.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/inventory/ItemType.java
+++ b/src/main/java/org/bukkit/inventory/ItemType.java
@@ -0,0 +0,0 @@ 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
}