From 3693bbdc6b65e68db10375d3eeab70f06708b729 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Thu, 9 May 2024 14:51:33 +0100 Subject: Use internals for getting block/entity counts For a long time I've been meaning to move some of this logic internally as this would allow us to avoid hitting systems like block state snapshots which can create issues as many of the spigot implementations of this stuff are increasingly broken, leading to unexpected crashes during ticking, even if the API cannot properly interact with these such states/items, it's generally more preferable to not crash the server in the course, and just let those interactions fail more gracefully. --- patches/api/0261-Improve-Item-Rarity-API.patch | 131 +++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 patches/api/0261-Improve-Item-Rarity-API.patch (limited to 'patches/api/0261-Improve-Item-Rarity-API.patch') diff --git a/patches/api/0261-Improve-Item-Rarity-API.patch b/patches/api/0261-Improve-Item-Rarity-API.patch new file mode 100644 index 0000000000..6080352888 --- /dev/null +++ b/patches/api/0261-Improve-Item-Rarity-API.patch @@ -0,0 +1,131 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +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 5aa595860c73e78cf3c9f2a8984c62744cfe5612..1e4ebe9bdc6aadf18029377e7ce70ca0d88bd1a1 100644 +--- a/src/main/java/org/bukkit/Material.java ++++ b/src/main/java/org/bukkit/Material.java +@@ -4750,6 +4750,19 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla + return Bukkit.getUnsafe().getBlockTranslationKey(this); + } + } ++ ++ /** ++ * Returns the item rarity for the item. The Material MUST 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 + + /** +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 645cff10eef90826bb44bbe937b141289f182cde..a92421bbf0ee40ecbe4f272459c6a918dc45344c 100644 +--- a/src/main/java/org/bukkit/inventory/ItemStack.java ++++ b/src/main/java/org/bukkit/inventory/ItemStack.java +@@ -891,5 +891,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 + } -- cgit v1.2.3