diff options
Diffstat (limited to 'patches/api/0211-Add-methods-to-get-translation-keys.patch')
-rw-r--r-- | patches/api/0211-Add-methods-to-get-translation-keys.patch | 517 |
1 files changed, 517 insertions, 0 deletions
diff --git a/patches/api/0211-Add-methods-to-get-translation-keys.patch b/patches/api/0211-Add-methods-to-get-translation-keys.patch new file mode 100644 index 0000000000..5af19e4030 --- /dev/null +++ b/patches/api/0211-Add-methods-to-get-translation-keys.patch @@ -0,0 +1,517 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic <[email protected]> +Date: Tue, 11 Aug 2020 19:17:46 +0200 +Subject: [PATCH] Add methods to get translation keys + +Co-authored-by: MeFisto94 <[email protected]> + +diff --git a/src/main/java/org/bukkit/Difficulty.java b/src/main/java/org/bukkit/Difficulty.java +index f35801783538d3377b04131b8bf6effd7eb8e1a5..427ce8cfd6f63e5c7ec7b264b15ab4111b947729 100644 +--- a/src/main/java/org/bukkit/Difficulty.java ++++ b/src/main/java/org/bukkit/Difficulty.java +@@ -7,7 +7,7 @@ import org.jetbrains.annotations.Nullable; + /** + * Represents the various difficulty levels that are available. + */ +-public enum Difficulty { ++public enum Difficulty implements net.kyori.adventure.translation.Translatable { // Paper - Adventure translations + /** + * Players regain health over time, hostile mobs don't spawn, the hunger + * bar does not deplete. +@@ -51,6 +51,12 @@ public enum Difficulty { + return value; + } + ++ // Paper start ++ @Override ++ public @org.jetbrains.annotations.NotNull String translationKey() { ++ return "options.difficulty." + this.name().toLowerCase(java.util.Locale.ENGLISH); ++ } ++ // Paper end + /** + * Gets the Difficulty represented by the specified value + * +diff --git a/src/main/java/org/bukkit/FireworkEffect.java b/src/main/java/org/bukkit/FireworkEffect.java +index bf7db5b3e7c2ac15016a48e520fba674726718ee..637fa73d4366c2d88e2716e5c8d3465706d788a7 100644 +--- a/src/main/java/org/bukkit/FireworkEffect.java ++++ b/src/main/java/org/bukkit/FireworkEffect.java +@@ -18,28 +18,44 @@ public final class FireworkEffect implements ConfigurationSerializable { + /** + * The type or shape of the effect. + */ +- public enum Type { ++ public enum Type implements net.kyori.adventure.translation.Translatable { // Paper - Adventure translations + /** + * A small ball effect. + */ +- BALL, ++ BALL("small_ball"), // Paper - add name + /** + * A large ball effect. + */ +- BALL_LARGE, ++ BALL_LARGE("large_ball"), // Paper - add name + /** + * A star-shaped effect. + */ +- STAR, ++ STAR("star"), // Paper - add name + /** + * A burst effect. + */ +- BURST, ++ BURST("burst"), // Paper - add name + /** + * A creeper-face effect. + */ +- CREEPER, ++ CREEPER("creeper"), // Paper - add name + ; ++ // Paper start ++ /** ++ * The name map. ++ */ ++ public static final net.kyori.adventure.util.Index<String, org.bukkit.FireworkEffect.Type> NAMES = net.kyori.adventure.util.Index.create(Type.class, type -> type.name); ++ private final String name; ++ ++ Type(final String name) { ++ this.name = name; ++ } ++ ++ @Override ++ public @NotNull String translationKey() { ++ return "item.minecraft.firework_star.shape." + this.name; ++ } ++ // Paper end + } + + /** +diff --git a/src/main/java/org/bukkit/GameMode.java b/src/main/java/org/bukkit/GameMode.java +index 81e45984a88fc84acd0f76d825abf4ddaed0ac3b..fdc42a79c5af30fdade41ee99245e6641f353571 100644 +--- a/src/main/java/org/bukkit/GameMode.java ++++ b/src/main/java/org/bukkit/GameMode.java +@@ -9,7 +9,7 @@ import org.jetbrains.annotations.Nullable; + * Represents the various type of game modes that {@link HumanEntity}s may + * have + */ +-public enum GameMode { ++public enum GameMode implements net.kyori.adventure.translation.Translatable { // Paper - implement Translatable + /** + * Creative mode may fly, build instantly, become invulnerable and create + * free items. +@@ -35,9 +35,18 @@ public enum GameMode { + + private final int value; + private static final Map<Integer, GameMode> BY_ID = Maps.newHashMap(); ++ // Paper start - translation keys ++ private final String translationKey; ++ ++ @Override ++ public @org.jetbrains.annotations.NotNull String translationKey() { ++ return this.translationKey; ++ } ++ // Paper end + + private GameMode(final int value) { + this.value = value; ++ this.translationKey = "gameMode." + this.name().toLowerCase(java.util.Locale.ENGLISH); // Paper + } + + /** +diff --git a/src/main/java/org/bukkit/GameRule.java b/src/main/java/org/bukkit/GameRule.java +index cca5267019052f77149f9913babd8b17abafe94f..be827e7fef0acb17bd41aeff9dc3dc4da3718e5e 100644 +--- a/src/main/java/org/bukkit/GameRule.java ++++ b/src/main/java/org/bukkit/GameRule.java +@@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; + * + * @param <T> type of rule (Boolean or Integer) + */ +-public final class GameRule<T> { ++public final class GameRule<T> implements net.kyori.adventure.translation.Translatable { // Paper - Adventure translations + + private static Map<String, GameRule<?>> gameRules = new HashMap<>(); + // Boolean rules +@@ -350,4 +350,11 @@ public final class GameRule<T> { + public static GameRule<?>[] values() { + return gameRules.values().toArray(new GameRule<?>[gameRules.size()]); + } ++ ++ // Paper start ++ @Override ++ public @NotNull String translationKey() { ++ return "gamerule." + this.name; ++ } ++ // Paper end + } +diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java +index c24fe19600fa8440c130eaea247d5874da3873ec..af1dca2385215e8fd19353aa6e9c024d4ad814e1 100644 +--- a/src/main/java/org/bukkit/Material.java ++++ b/src/main/java/org/bukkit/Material.java +@@ -122,7 +122,7 @@ import org.jetbrains.annotations.Nullable; + * An enum of all material IDs accepted by the official server and client + */ + @SuppressWarnings({"DeprecatedIsStillUsed", "deprecation"}) // Paper +-public enum Material implements Keyed, Translatable { ++public enum Material implements Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper + //<editor-fold desc="Materials" defaultstate="collapsed"> + AIR(9648, 0), + STONE(22948), +@@ -4699,6 +4699,15 @@ public enum Material implements Keyed, Translatable { + } + return false; + } ++ ++ @Override ++ public @NotNull String translationKey() { ++ if (this.isItem()) { ++ return Bukkit.getUnsafe().getItemTranslationKey(this); ++ } else { ++ return Bukkit.getUnsafe().getBlockTranslationKey(this); ++ } ++ } + // Paper end + + /** +@@ -11402,9 +11411,11 @@ public enum Material implements Keyed, Translatable { + * material + * @see #getBlockTranslationKey() + * @see #getItemTranslationKey() ++ * @deprecated use {@link #translationKey()} + */ + @Override + @NotNull ++ @Deprecated(forRemoval = true) // Paper + public String getTranslationKey() { + if (this.isItem()) { + return Bukkit.getUnsafe().getItemTranslationKey(this); +diff --git a/src/main/java/org/bukkit/MusicInstrument.java b/src/main/java/org/bukkit/MusicInstrument.java +index a7573ce8c6dff9862c97ce74650284b4a42e7989..ee5368372e136541eafe1d7ffb395de670fe4843 100644 +--- a/src/main/java/org/bukkit/MusicInstrument.java ++++ b/src/main/java/org/bukkit/MusicInstrument.java +@@ -7,7 +7,7 @@ import java.util.Collections; + import org.jetbrains.annotations.NotNull; + import org.jetbrains.annotations.Nullable; + +-public abstract class MusicInstrument implements Keyed { ++public abstract class MusicInstrument implements Keyed, net.kyori.adventure.translation.Translatable { // Paper - translation keys + + public static final MusicInstrument PONDER = getInstrument("ponder_goat_horn"); + public static final MusicInstrument SING = getInstrument("sing_goat_horn"); +@@ -52,4 +52,11 @@ public abstract class MusicInstrument implements Keyed { + + return instrument; + } ++ ++ // Paper start - translation key ++ @Override ++ public @NotNull String translationKey() { ++ return "instrument.minecraft." + this.getKey().value(); ++ } ++ // Paper end - translation key + } +diff --git a/src/main/java/org/bukkit/Translatable.java b/src/main/java/org/bukkit/Translatable.java +index e3faa2c675c85a9cbdbbb1debec0ff81c58a1bbd..fd1629c2d2028a88fb3d56b0aeb833d17235080a 100644 +--- a/src/main/java/org/bukkit/Translatable.java ++++ b/src/main/java/org/bukkit/Translatable.java +@@ -5,14 +5,18 @@ import org.jetbrains.annotations.NotNull; + /** + * Represents an object with a text representation that can be translated by the + * Minecraft client. ++ * @deprecated use {@link net.kyori.adventure.translation.Translatable} + */ ++@Deprecated(forRemoval = true) // Paper + public interface Translatable { + + /** + * Get the translation key, suitable for use in a translation component. + * + * @return the translation key ++ * @deprecated look for a {@code translationKey()} method instead + */ + @NotNull ++ @Deprecated(forRemoval = true) // Paper + String getTranslationKey(); + } +diff --git a/src/main/java/org/bukkit/attribute/Attribute.java b/src/main/java/org/bukkit/attribute/Attribute.java +index 36501052de5ad0b80aa1dcbe97d44dd3204f749b..37f93b7e9f722e76631c3e7d3e770526ee0c3926 100644 +--- a/src/main/java/org/bukkit/attribute/Attribute.java ++++ b/src/main/java/org/bukkit/attribute/Attribute.java +@@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull; + /** + * Types of attributes which may be present on an {@link Attributable}. + */ +-public enum Attribute implements Keyed { ++public enum Attribute implements Keyed, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations + + /** + * Maximum health of an Entity. +@@ -77,4 +77,10 @@ public enum Attribute implements Keyed { + public NamespacedKey getKey() { + return key; + } ++ // Paper start ++ @Override ++ public @NotNull String translationKey() { ++ return "attribute.name." + this.key.getKey(); ++ } ++ // Paper end + } +diff --git a/src/main/java/org/bukkit/block/Biome.java b/src/main/java/org/bukkit/block/Biome.java +index d3087d60378822cdd7cea25fd63d3f496e3cd2fb..5d8fa5b39a5d50cca48ba63af3a84b80f279b649 100644 +--- a/src/main/java/org/bukkit/block/Biome.java ++++ b/src/main/java/org/bukkit/block/Biome.java +@@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull; + /** + * Holds all accepted Biomes in the default server + */ +-public enum Biome implements Keyed { ++public enum Biome implements Keyed, net.kyori.adventure.translation.Translatable { // Paper + OCEAN, + PLAINS, + DESERT, +@@ -89,4 +89,11 @@ public enum Biome implements Keyed { + public NamespacedKey getKey() { + return key; + } ++ ++ // Paper start ++ @Override ++ public @NotNull String translationKey() { ++ return "biome.minecraft." + this.key.getKey(); ++ } ++ // Paper end + } +diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java +index bf29d9b733afc7c62725d259f4920c4f211cc6d0..1d3812db989a55b6f31bb30dffe70323eb592a15 100644 +--- a/src/main/java/org/bukkit/block/Block.java ++++ b/src/main/java/org/bukkit/block/Block.java +@@ -32,7 +32,7 @@ import org.jetbrains.annotations.Nullable; + * (i.e. lighting and power) may not be able to be safely accessed during world + * generation when used in cases like BlockPhysicsEvent!!!! + */ +-public interface Block extends Metadatable, Translatable { ++public interface Block extends Metadatable, Translatable, net.kyori.adventure.translation.Translatable { // Paper - translatable + + /** + * Gets the metadata for this block +@@ -682,5 +682,12 @@ public interface Block extends Metadatable, Translatable { + * @return the sound group for this block + */ + @NotNull org.bukkit.SoundGroup getBlockSoundGroup(); ++ ++ /** ++ * @deprecated use {@link #translationKey()} ++ */ ++ @NotNull ++ @Deprecated(forRemoval = true) ++ String getTranslationKey(); + // Paper end + } +diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java +index 6a915b5b41daa5ea64913a2d5c611a6167168395..4a88198be6634b47fc51e55acc5f6415e4aff1ab 100644 +--- a/src/main/java/org/bukkit/enchantments/Enchantment.java ++++ b/src/main/java/org/bukkit/enchantments/Enchantment.java +@@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; + /** + * The various type of enchantments that may be added to armour or weapons + */ +-public abstract class Enchantment implements Keyed { ++public abstract class Enchantment implements Keyed, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations + /** + * Provides protection against environmental damage + */ +diff --git a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java +index c4f86ba1037f3f0e5d697a0962d71d6f8c7c1fbe..ac0371285370594d4de1554871b19bbcd2311730 100644 +--- a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java ++++ b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java +@@ -26,5 +26,10 @@ public abstract class EnchantmentWrapper extends Enchantment { + public net.kyori.adventure.text.Component displayName(int level) { + return getEnchantment().displayName(level); + } ++ ++ @Override ++ public @NotNull String translationKey() { ++ return getEnchantment().translationKey(); ++ } + // Paper end + } +diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java +index a4578c520aa1078a741aac4b12fe89bf82b3c465..550d66e0d41878717c6a92caade4a8413674f012 100644 +--- a/src/main/java/org/bukkit/entity/EntityType.java ++++ b/src/main/java/org/bukkit/entity/EntityType.java +@@ -24,7 +24,7 @@ import org.jetbrains.annotations.Contract; + import org.jetbrains.annotations.NotNull; + import org.jetbrains.annotations.Nullable; + +-public enum EntityType implements Keyed, Translatable { ++public enum EntityType implements Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper - translatable + + // These strings MUST match the strings in nms.EntityTypes and are case sensitive. + /** +@@ -443,10 +443,22 @@ public enum EntityType implements Keyed, Translatable { + + @Override + @NotNull ++ @Deprecated(forRemoval = true) // Paper + public String getTranslationKey() { + return Bukkit.getUnsafe().getTranslationKey(this); + } + ++ // Paper start ++ /** ++ * @throws IllegalArgumentException if the entity does not have a translation key (is probably a custom entity) ++ */ ++ @Override ++ public @NotNull String translationKey() { ++ Preconditions.checkArgument(this != UNKNOWN, "UNKNOWN entities do not have translation keys"); ++ return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this); ++ } ++ // Paper end ++ + /** + * Gets if this EntityType is enabled by feature in a world. + * +diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java +index d841d94d46462e0ceb7c6b04cc8fc36792bd9201..8c8176121cafed0ed09239b6a7b392dc846438e2 100644 +--- a/src/main/java/org/bukkit/entity/Villager.java ++++ b/src/main/java/org/bukkit/entity/Villager.java +@@ -160,7 +160,7 @@ public interface Villager extends AbstractVillager { + * Represents the various different Villager professions there may be. + * Villagers have different trading options depending on their profession, + */ +- public enum Profession implements Keyed { ++ public enum Profession implements Keyed, net.kyori.adventure.translation.Translatable { // Paper + NONE, + /** + * Armorer profession. Wears a black apron. Armorers primarily trade for +@@ -243,6 +243,13 @@ public interface Villager extends AbstractVillager { + public NamespacedKey getKey() { + return key; + } ++ ++ // Paper start ++ @Override ++ public @NotNull String translationKey() { ++ return "entity.minecraft.villager." + this.key.getKey(); ++ } ++ // Paper end + } + + // Paper start - Add villager reputation API +diff --git a/src/main/java/org/bukkit/inventory/CreativeCategory.java b/src/main/java/org/bukkit/inventory/CreativeCategory.java +index 5bd252c0ae3b09fe141d131360c67bb9bfbf5422..78587d9fabe6371a23a7963917b054dbe7603694 100644 +--- a/src/main/java/org/bukkit/inventory/CreativeCategory.java ++++ b/src/main/java/org/bukkit/inventory/CreativeCategory.java +@@ -3,51 +3,64 @@ package org.bukkit.inventory; + /** + * Represents a category in the creative inventory. + */ +-public enum CreativeCategory { ++public enum CreativeCategory implements net.kyori.adventure.translation.Translatable { // Paper + + /** + * An assortment of building blocks including dirt, bricks, planks, ores + * slabs, etc. + */ +- BUILDING_BLOCKS, ++ BUILDING_BLOCKS("buildingBlocks"), // Paper + /** + * Blocks and items typically used for decorative purposes including + * candles, saplings, flora, fauna, fences, walls, carpets, etc. + */ +- DECORATIONS, ++ DECORATIONS("decorations"), // Paper + /** + * Blocks used and associated with redstone contraptions including buttons, + * levers, pressure plates, redstone components, pistons, etc. + */ +- REDSTONE, ++ REDSTONE("redstone"), // Paper + /** + * Items pertaining to transportation including minecarts, rails, boats, + * elytra, etc. + */ +- TRANSPORTATION, ++ TRANSPORTATION("transportation"), // Paper + /** + * Miscellaneous items and blocks that do not fit into other categories + * including gems, dyes, spawn eggs, discs, banner patterns, etc. + */ +- MISC, ++ MISC("misc"), // Paper + /** + * Food items consumable by the player including meats, berries, edible + * drops from creatures, etc. + */ +- FOOD, ++ FOOD("food"), // Paper + /** + * Equipment items meant for general utility including pickaxes, axes, hoes, + * flint and steel, and useful enchantment books for said tools. + */ +- TOOLS, ++ TOOLS("tools"), // Paper + /** + * Equipment items meant for combat including armor, swords, bows, tipped + * arrows, and useful enchantment books for said equipment. + */ +- COMBAT, ++ COMBAT("combat"), // Paper + /** + * All items related to brewing and potions including all types of potions, + * their variants, and ingredients to brew them. + */ +- BREWING; ++ BREWING("brewing"); // Paper ++ // Paper start ++ private final String translationKey; ++ ++ CreativeCategory(String translationKey) { ++ this.translationKey = "itemGroup." + translationKey; ++ } ++ ++ @Override ++ public @org.jetbrains.annotations.NotNull String translationKey() { ++ return this.translationKey; ++ } ++ // Paper end ++ + } +diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java +index 1f31ff5b85217a1c631f05f43c5a65839a36b26e..1532b3e1b655a9b58588c11b80824ed4cec8c66a 100644 +--- a/src/main/java/org/bukkit/inventory/ItemStack.java ++++ b/src/main/java/org/bukkit/inventory/ItemStack.java +@@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; + * use this class to encapsulate Materials for which {@link Material#isItem()} + * returns false.</b> + */ +-public class ItemStack implements Cloneable, ConfigurationSerializable, Translatable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem> { // Paper ++public class ItemStack implements Cloneable, ConfigurationSerializable, Translatable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem>, net.kyori.adventure.translation.Translatable { // Paper + private Material type = Material.AIR; + private int amount = 0; + private MaterialData data = null; +@@ -617,6 +617,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat + + @Override + @NotNull ++ @Deprecated(forRemoval = true) // Paper + public String getTranslationKey() { + return Bukkit.getUnsafe().getTranslationKey(this); + } +@@ -876,5 +877,16 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat + ItemMeta itemMeta = getItemMeta(); + return itemMeta != null && itemMeta.hasItemFlag(flag); + } ++ ++ /** ++ * {@inheritDoc} ++ * <p> ++ * This is not the same as getting the translation key ++ * for the material of this itemstack. ++ */ ++ @Override ++ public @NotNull String translationKey() { ++ return Bukkit.getUnsafe().getTranslationKey(this); ++ } + // Paper end + } |