From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MeFisto94 Date: Tue, 11 Aug 2020 19:17:46 +0200 Subject: [PATCH] Add a way to get translation keys for blocks, entities and materials diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java index 52290c43d1c02785c4cae4a73494a75cdc369e02..1efc97d88c38863bcd6cd4c11c8b88a18ee06b25 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java @@ -3992,6 +3992,16 @@ public enum Material implements Keyed { } return false; } + + /** + * Return the translation key for the Material, so the client can translate it into the active + * locale when using a TranslatableComponent. + * @return the translation key + */ + @NotNull + public String getTranslationKey() { + return Bukkit.getUnsafe().getTranslationKey(this); + } // Paper end /** diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java index e348034288c74ab80360086d71f0b7f61551df24..2d9264ffe0fee863f1b814952ef063daa7962d76 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java @@ -101,5 +101,34 @@ public interface UnsafeValues { byte[] serializeItem(ItemStack item); ItemStack deserializeItem(byte[] data); + + /** + * Return the translation key for the Material, so the client can translate it into the active + * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}. + * @return the translation key + */ + String getTranslationKey(Material mat); + + /** + * Return the translation key for the Block, so the client can translate it into the active + * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}. + * @return the translation key + */ + String getTranslationKey(org.bukkit.block.Block block); + + /** + * Return the translation key for the EntityType, so the client can translate it into the active + * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.
+ * This is null, when the EntityType isn't known to NMS (custom entities) + * @return the translation key + */ + String getTranslationKey(org.bukkit.entity.EntityType type); + + /** + * Return the translation key for the ItemStack, so the client can translate it into the active + * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.
+ * @return the translation key + */ + String getTranslationKey(ItemStack itemStack); // Paper end } diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java index 786b8011e98b2fe93cc2418d624f6350ede62d90..024deba760c41787190d20e4ac5c541920bb4991 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -610,5 +610,13 @@ public interface Block extends Metadatable { */ @NotNull com.destroystokyo.paper.block.BlockSoundGroup getSoundGroup(); + + /** + * Return the translation key for the Block, so the client can translate it into the active + * locale when using a TranslatableComponent. + * @return the translation key + */ + @NotNull + String getTranslationKey(); // Paper end } diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java index 9be5371c7f398d0ec8241403661415ff40661067..f415b61b0d4b57e1557aaf240a0f2ad5915035fc 100644 --- a/src/main/java/org/bukkit/entity/EntityType.java +++ b/src/main/java/org/bukkit/entity/EntityType.java @@ -419,4 +419,15 @@ public enum EntityType implements Keyed { public boolean isAlive() { return living; } + + /** + * Return the translation key for the EntityType, so the client can translate it into the active + * locale when using a TranslatableComponent.
+ * This is null, when the EntityType isn't known to NMS (custom entities) + * @return the translation key + */ + @Nullable + String getTranslationKey() { + return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this); + } } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java index 93ab6407ff09fa5e90e2d8e92fd43a4f95d9a6fa..d11ebe61560e652fe96b3b0c7ab9174788ff83cb 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -852,5 +852,17 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor ItemMeta itemMeta = getItemMeta(); return itemMeta != null && itemMeta.hasItemFlag(flag); } + + /** + * Gets the translation key for this itemstack. + * This is not the same as getting the translation key + * for the material of this itemstack. + * + * @return the translation key + */ + @NotNull + public String getTranslationKey() { + return Bukkit.getUnsafe().getTranslationKey(this); + } // Paper end }