928bcc8d3a
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 09943450 Update SnakeYAML version 5515734f SPIGOT-7162: Incorrect description for Entity#getVehicle javadoc 6f82b381 PR-788: Add getHand() to all relevant events CraftBukkit Changes: aaf484f6f SPIGOT-7163: CraftMerchantRecipe doesn't copy demand and specialPrice from BukkitMerchantRecipe 5329dd6fd PR-1107: Add getHand() to all relevant events 93061706e SPIGOT-7045: Ocelots never spawn with babies with spawn reason OCELOT_BABY
175 Zeilen
8.0 KiB
Diff
175 Zeilen
8.0 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 a859a675b4bc543e139358223cc92ad5eee3ddb5..31a22f26070059e5379730c1940ff1c5fb109be1 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 6fefc65c6f9364d71e4e410972dfd79d97fdae3e..c65cc24fbd8b6cb9828fbc978c21c3f7ef9171a3 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..9292a0119499d14c9ed170999ac3b8dfdd1f839a 100644
|
|
--- a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
|
|
+++ b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
|
|
@@ -1,12 +1,29 @@
|
|
package io.papermc.paper.world;
|
|
|
|
import com.destroystokyo.paper.ClientOption;
|
|
+import net.minecraft.core.Registry;
|
|
+import net.minecraft.core.RegistryAccess;
|
|
+import net.minecraft.network.chat.contents.TranslatableContents;
|
|
+import net.minecraft.resources.ResourceKey;
|
|
import net.minecraft.world.entity.player.ChatVisiblity;
|
|
+import net.minecraft.world.item.CreativeModeTab;
|
|
+import net.minecraft.world.level.GameType;
|
|
+import net.minecraft.world.level.biome.Biome;
|
|
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.Map;
|
|
+import java.util.Objects;
|
|
+
|
|
+public class TranslationKeyTest extends AbstractTestingBase {
|
|
|
|
@Test
|
|
public void testChatVisibilityKeys() {
|
|
@@ -15,4 +32,60 @@ 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());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testBiome() {
|
|
+ for (Map.Entry<ResourceKey<Biome>, Biome> nms : RegistryAccess.builtinCopy().registry(Registry.BIOME_REGISTRY).get().entrySet()) {
|
|
+ org.bukkit.block.Biome bukkit = org.bukkit.block.Biome.valueOf(nms.getKey().location().getPath().toUpperCase());
|
|
+ Assert.assertEquals("translation key mismatch for " + bukkit, nms.getKey().location().toLanguageKey("biome"), bukkit.translationKey());
|
|
+ }
|
|
+ }
|
|
}
|