aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0254-Improve-Item-Rarity-API.patch
blob: 0882e2924c76a7276ad9dacc874da7a78258c966 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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
Subject: [PATCH] Improve Item Rarity API


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..f1cd5a4f37eee8975ac3d0421b524afcf644fafd
--- /dev/null
+++ b/src/main/java/io/papermc/paper/inventory/ItemRarity.java
@@ -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;
+    }
+}
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index c12bb07fcf29be1a284f5f272b35edf206633d4a..cc25734f3dcf6075eb44e39da01ed2f1b59b618e 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
@@ -4688,6 +4688,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.
      *
diff --git a/src/main/java/org/bukkit/inventory/ItemRarity.java b/src/main/java/org/bukkit/inventory/ItemRarity.java
index e7931f73f10fe35ebd5fe4a04b036d53bb117ebd..cbce835ed6d44e5b8c9aaae4e36a77f8e5bed45f 100644
--- a/src/main/java/org/bukkit/inventory/ItemRarity.java
+++ b/src/main/java/org/bukkit/inventory/ItemRarity.java
@@ -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
 }
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index ef36a696f2f926d70c5d93ce08f75fa9a749e32f..fb1d7ff51f267225ac76c29a56d67fb443d3a92f 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -907,5 +907,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
 }
diff --git a/src/main/java/org/bukkit/inventory/ItemType.java b/src/main/java/org/bukkit/inventory/ItemType.java
index 5dd1c084e42ee93f3a358f58ed76b0a7d36f0713..2b5a18fe7e885fa9b581c0afb299e31f3db2690c 100644
--- a/src/main/java/org/bukkit/inventory/ItemType.java
+++ b/src/main/java/org/bukkit/inventory/ItemType.java
@@ -2311,4 +2311,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
 }