162 Zeilen
7.4 KiB
Diff
162 Zeilen
7.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Tue, 11 Aug 2020 19:16:09 +0200
|
|
Subject: [PATCH] Add methods to get translation keys
|
|
|
|
Co-authored-by: MeFisto94 <MeFisto94@users.noreply.github.com>
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
index ea3358905dcd39a1a855d98570457c65dcd7513d..396fb96abed1e77893d8ee8a15cff18cad804475 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
@@ -668,5 +668,15 @@ public class CraftBlock implements Block {
|
|
public org.bukkit.SoundGroup getBlockSoundGroup() {
|
|
return org.bukkit.craftbukkit.CraftSoundGroup.getSoundGroup(this.getNMS().getSoundType());
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public String getTranslationKey() {
|
|
+ return this.translationKey();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public String translationKey() {
|
|
+ return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this);
|
|
+ }
|
|
// Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
|
index 7d186c7595dbcd109cee2cc16d70d8302b4d6b8f..9bc659a7ab2030e851c85ca511fbba51998563bf 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
|
@@ -194,6 +194,11 @@ public class CraftEnchantment extends Enchantment {
|
|
public net.kyori.adventure.text.Component displayName(int level) {
|
|
return io.papermc.paper.adventure.PaperAdventure.asAdventure(getHandle().getFullname(level));
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public String translationKey() {
|
|
+ return this.target.getDescriptionId();
|
|
+ }
|
|
// Paper end
|
|
|
|
public net.minecraft.world.item.enchantment.Enchantment getHandle() {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
index bc6d9dc549b865d47899db947b7e5b00ff312d2f..25813d45ba3b39fa1e1d566ca04ed122717b916d 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
@@ -478,6 +478,30 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
|
Preconditions.checkArgument(dataVersion <= getDataVersion(), "Newer version! Server downgrades are not supported!");
|
|
return compound;
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public String getTranslationKey(Material mat) {
|
|
+ if (mat.isBlock()) {
|
|
+ return getBlock(mat).getDescriptionId();
|
|
+ }
|
|
+ return getItem(mat).getDescriptionId();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public String getTranslationKey(org.bukkit.block.Block block) {
|
|
+ return ((org.bukkit.craftbukkit.block.CraftBlock)block).getNMS().getBlock().getDescriptionId();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public String getTranslationKey(org.bukkit.entity.EntityType type) {
|
|
+ return net.minecraft.world.entity.EntityType.byString(type.getName()).map(net.minecraft.world.entity.EntityType::getDescriptionId).orElse(null);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public String getTranslationKey(org.bukkit.inventory.ItemStack itemStack) {
|
|
+ net.minecraft.world.item.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(itemStack);
|
|
+ return nmsItemStack.getItem().getDescriptionId(nmsItemStack);
|
|
+ }
|
|
// Paper end
|
|
|
|
/**
|
|
diff --git a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
|
|
index fab3063fffa959ac7f0eb5937f2fae94d11b6591..94dacabea836bc27eb678bd4465d8b9a01d98d91 100644
|
|
--- a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
|
|
+++ b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
|
|
@@ -1,12 +1,24 @@
|
|
package io.papermc.paper.world;
|
|
|
|
import com.destroystokyo.paper.ClientOption;
|
|
+import net.minecraft.network.chat.contents.TranslatableContents;
|
|
import net.minecraft.world.entity.player.ChatVisiblity;
|
|
+import net.minecraft.world.item.CreativeModeTab;
|
|
+import net.minecraft.world.level.GameType;
|
|
import org.bukkit.Difficulty;
|
|
+import org.bukkit.FireworkEffect;
|
|
+import org.bukkit.GameMode;
|
|
+import org.bukkit.GameRule;
|
|
+import org.bukkit.attribute.Attribute;
|
|
+import org.bukkit.craftbukkit.inventory.CraftCreativeCategory;
|
|
+import org.bukkit.inventory.CreativeCategory;
|
|
+import org.bukkit.support.AbstractTestingBase;
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
|
|
-public class TranslationKeyTest {
|
|
+import java.util.Objects;
|
|
+
|
|
+public class TranslationKeyTest extends AbstractTestingBase {
|
|
|
|
@Test
|
|
public void testChatVisibilityKeys() {
|
|
@@ -15,4 +27,52 @@ public class TranslationKeyTest {
|
|
Assert.assertEquals(chatVisibility + "'s translation key doesn't match", ChatVisiblity.valueOf(chatVisibility.name()).getKey(), chatVisibility.translationKey());
|
|
}
|
|
}
|
|
+
|
|
+ @Test
|
|
+ public void testDifficultyKeys() {
|
|
+ for (Difficulty bukkitDifficulty : Difficulty.values()) {
|
|
+ Assert.assertEquals(bukkitDifficulty + "'s translation key doesn't match", ((TranslatableContents) net.minecraft.world.Difficulty.byId(bukkitDifficulty.ordinal()).getDisplayName().getContents()).getKey(), bukkitDifficulty.translationKey());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testGameruleKeys() {
|
|
+ for (GameRule<?> rule : GameRule.values()) {
|
|
+ Assert.assertEquals(rule.getName() + "'s translation doesn't match", org.bukkit.craftbukkit.CraftWorld.getGameRulesNMS().get(rule.getName()).getDescriptionId(), rule.translationKey());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testAttributeKeys() {
|
|
+ for (Attribute attribute : Attribute.values()) {
|
|
+ Assert.assertEquals("translation key mismatch for " + attribute, org.bukkit.craftbukkit.attribute.CraftAttributeMap.toMinecraft(attribute).getDescriptionId(), attribute.translationKey());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testFireworkEffectType() {
|
|
+ for (FireworkEffect.Type type : FireworkEffect.Type.values()) {
|
|
+ Assert.assertEquals("translation key mismatch for " + type, net.minecraft.world.item.FireworkRocketItem.Shape.byId(org.bukkit.craftbukkit.inventory.CraftMetaFirework.getNBT(type)).getName(), org.bukkit.FireworkEffect.Type.NAMES.key(type));
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testCreativeCategory() {
|
|
+ for (CreativeModeTab tab : CreativeModeTab.TABS) {
|
|
+ if (tab == CreativeModeTab.TAB_SEARCH || tab == CreativeModeTab.TAB_HOTBAR || tab == CreativeModeTab.TAB_INVENTORY) { // not implemented in the api
|
|
+ continue;
|
|
+ }
|
|
+ CreativeCategory category = Objects.requireNonNull(CraftCreativeCategory.fromNMS(tab));
|
|
+ Assert.assertEquals("translation key mismatch for " + category, ((TranslatableContents) tab.getDisplayName().getContents()).getKey(), category.translationKey());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testGameMode() {
|
|
+ for (GameType nms : GameType.values()) {
|
|
+ GameMode bukkit = GameMode.getByValue(nms.getId());
|
|
+ Assert.assertNotNull(bukkit);
|
|
+ Assert.assertEquals("translation key mismatch for " + bukkit, ((TranslatableContents) nms.getLongDisplayName().getContents()).getKey(), bukkit.translationKey());
|
|
+ }
|
|
+ }
|
|
}
|