Skip to content

Commit 00c6ae8

Browse files
Implement Translatable on CreativeCategory (#7587)
1 parent 04e1b07 commit 00c6ae8

File tree

2 files changed

+110
-7
lines changed

2 files changed

+110
-7
lines changed

patches/api/0220-Add-methods-to-get-translation-keys.patch

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,85 @@ index c799ac46dbe257d470d3b236cf55b41240f5fda8..d61855b83da0776fe910dee8cde184c7
336336
}
337337

338338
// Paper start - Add villager reputation API
339+
diff --git a/src/main/java/org/bukkit/inventory/CreativeCategory.java b/src/main/java/org/bukkit/inventory/CreativeCategory.java
340+
index 5bd252c0ae3b09fe141d131360c67bb9bfbf5422..0ac1f47d1bea37630d1bb011e52eff90d7a31b41 100644
341+
--- a/src/main/java/org/bukkit/inventory/CreativeCategory.java
342+
+++ b/src/main/java/org/bukkit/inventory/CreativeCategory.java
343+
@@ -3,51 +3,64 @@ package org.bukkit.inventory;
344+
/**
345+
* Represents a category in the creative inventory.
346+
*/
347+
-public enum CreativeCategory {
348+
+public enum CreativeCategory implements net.kyori.adventure.translation.Translatable { // Paper
349+
350+
/**
351+
* An assortment of building blocks including dirt, bricks, planks, ores
352+
* slabs, etc.
353+
*/
354+
- BUILDING_BLOCKS,
355+
+ BUILDING_BLOCKS("buildingBlocks"), // Paper
356+
/**
357+
* Blocks and items typically used for decorative purposes including
358+
* candles, saplings, flora, fauna, fences, walls, carpets, etc.
359+
*/
360+
- DECORATIONS,
361+
+ DECORATIONS("decorations"), // Paper
362+
/**
363+
* Blocks used and associated with redstone contraptions including buttons,
364+
* levers, pressure plates, redstone components, pistons, etc.
365+
*/
366+
- REDSTONE,
367+
+ REDSTONE("redstone"), // Paper
368+
/**
369+
* Items pertaining to transportation including minecarts, rails, boats,
370+
* elytra, etc.
371+
*/
372+
- TRANSPORTATION,
373+
+ TRANSPORTATION("transportation"), // Paper
374+
/**
375+
* Miscellaneous items and blocks that do not fit into other categories
376+
* including gems, dyes, spawn eggs, discs, banner patterns, etc.
377+
*/
378+
- MISC,
379+
+ MISC("misc"), // Paper
380+
/**
381+
* Food items consumable by the player including meats, berries, edible
382+
* drops from creatures, etc.
383+
*/
384+
- FOOD,
385+
+ FOOD("food"), // Paper
386+
/**
387+
* Equipment items meant for general utility including pickaxes, axes, hoes,
388+
* flint and steel, and useful enchantment books for said tools.
389+
*/
390+
- TOOLS,
391+
+ TOOLS("tools"), // Paper
392+
/**
393+
* Equipment items meant for combat including armor, swords, bows, tipped
394+
* arrows, and useful enchantment books for said equipment.
395+
*/
396+
- COMBAT,
397+
+ COMBAT("combat"), // Paper
398+
/**
399+
* All items related to brewing and potions including all types of potions,
400+
* their variants, and ingredients to brew them.
401+
*/
402+
- BREWING;
403+
+ BREWING("brewing"); // Paper
404+
+ // Paper start
405+
+ private final String translationKey;
406+
+
407+
+ CreativeCategory(String translationKey) {
408+
+ this.translationKey = "itemGroup." + translationKey;
409+
+ }
410+
+
411+
+ @Override
412+
+ public @org.jetbrains.annotations.NotNull String translationKey() {
413+
+ return this.translationKey;
414+
+ }
415+
+ // Paper start
416+
+
417+
}
339418
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
340419
index f0ba7ba369aad67f6af0f946dc52b3e1c8958b15..d13cedfab28a4de469bbc3f6b141922979628333 100644
341420
--- a/src/main/java/org/bukkit/inventory/ItemStack.java

patches/server/0495-Add-methods-to-get-translation-keys.patch

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,32 @@ index 3b4764986302194882e009fe20a9d6406cf2be8e..008c15164a7affb785964f604f8fea93
7777

7878
/**
7979
diff --git a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
80-
index 6cd015dc5a2e012ac827c2b2d9aa5542b0591afb..b2e73df86683b88c83349b6d13456f5b051ac5d5 100644
80+
index 6cd015dc5a2e012ac827c2b2d9aa5542b0591afb..a5a4026a09b45d7af70a56ce65b8382ac4b22efc 100644
8181
--- a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
8282
+++ b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
83-
@@ -7,7 +7,7 @@ import org.bukkit.Difficulty;
83+
@@ -3,11 +3,20 @@ package io.papermc.paper.world;
84+
import com.destroystokyo.paper.ClientOption;
85+
import net.minecraft.network.chat.TranslatableComponent;
86+
import net.minecraft.world.entity.player.ChatVisiblity;
87+
+import net.minecraft.world.item.CreativeModeTab;
88+
import org.bukkit.Difficulty;
89+
+import org.bukkit.FireworkEffect;
90+
+import org.bukkit.GameRule;
91+
+import org.bukkit.attribute.Attribute;
92+
+import org.bukkit.craftbukkit.inventory.CraftCreativeCategory;
93+
+import org.bukkit.inventory.CreativeCategory;
94+
+import org.bukkit.support.AbstractTestingBase;
8495
import org.junit.Assert;
8596
import org.junit.Test;
8697

8798
-public class TranslationKeyTest {
88-
+public class TranslationKeyTest extends org.bukkit.support.AbstractTestingBase {
99+
+import java.util.Objects;
100+
+
101+
+public class TranslationKeyTest extends AbstractTestingBase {
89102

90103
@Test
91104
public void testChatVisibilityKeys() {
92-
@@ -16,4 +16,32 @@ public class TranslationKeyTest {
105+
@@ -16,4 +25,43 @@ public class TranslationKeyTest {
93106
Assert.assertEquals(chatVisibility + "'s translation key doesn't match", ChatVisiblity.valueOf(chatVisibility.name()).getKey(), chatVisibility.translationKey());
94107
}
95108
}
@@ -103,22 +116,33 @@ index 6cd015dc5a2e012ac827c2b2d9aa5542b0591afb..b2e73df86683b88c83349b6d13456f5b
103116
+
104117
+ @Test
105118
+ public void testGameruleKeys() {
106-
+ for (org.bukkit.GameRule<?> rule : org.bukkit.GameRule.values()) {
119+
+ for (GameRule<?> rule : GameRule.values()) {
107120
+ Assert.assertEquals(rule.getName() + "'s translation doesn't match", org.bukkit.craftbukkit.CraftWorld.getGameRulesNMS().get(rule.getName()).getDescriptionId(), rule.translationKey());
108121
+ }
109122
+ }
110123
+
111124
+ @Test
112125
+ public void testAttributeKeys() {
113-
+ for (org.bukkit.attribute.Attribute attribute : org.bukkit.attribute.Attribute.values()) {
126+
+ for (Attribute attribute : Attribute.values()) {
114127
+ Assert.assertEquals("translation key mismatch for " + attribute, org.bukkit.craftbukkit.attribute.CraftAttributeMap.toMinecraft(attribute).getDescriptionId(), attribute.translationKey());
115128
+ }
116129
+ }
117130
+
118131
+ @Test
119132
+ public void testFireworkEffectType() {
120-
+ for (org.bukkit.FireworkEffect.Type type : org.bukkit.FireworkEffect.Type.values()) {
133+
+ for (FireworkEffect.Type type : FireworkEffect.Type.values()) {
121134
+ 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));
122135
+ }
136+
+ }
137+
+
138+
+ @Test
139+
+ public void testCreativeCategory() {
140+
+ for (CreativeModeTab tab : CreativeModeTab.TABS) {
141+
+ if (tab == CreativeModeTab.TAB_SEARCH || tab == CreativeModeTab.TAB_HOTBAR || tab == CreativeModeTab.TAB_INVENTORY) { // not implemented in the api
142+
+ continue;
143+
+ }
144+
+ CreativeCategory category = Objects.requireNonNull(CraftCreativeCategory.fromNMS(tab));
145+
+ Assert.assertEquals("translation key mismatch for " + category, ((TranslatableComponent) tab.getDisplayName()).getKey(), category.translationKey());
146+
+ }
123147
+ }
124148
}

0 commit comments

Comments
 (0)