Skip to content

Commit 3fafcd2

Browse files
committed
Various tooltip localization improvements
1 parent ca59101 commit 3fafcd2

25 files changed

+97
-201
lines changed

Xplat/src/main/java/vazkii/botania/client/gui/ItemsRemainingRenderHandler.java

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020

2121
import org.jetbrains.annotations.Nullable;
2222

23+
import vazkii.botania.client.integration.shared.LocaleHelper;
2324
import vazkii.botania.network.clientbound.UpdateItemsRemainingPacket;
2425
import vazkii.botania.xplat.XplatAbstractions;
2526

27+
import java.text.NumberFormat;
2628
import java.util.regex.Pattern;
2729

2830
public final class ItemsRemainingRenderHandler {
@@ -54,43 +56,43 @@ public static void render(GuiGraphics gui, float partialTick) {
5456
gui.renderItem(stack, 0, 0);
5557
ms.popPose();
5658

57-
Component text = Component.empty();
58-
59-
if (customString == null) {
60-
if (!stack.isEmpty()) {
61-
text = stack.getHoverName().copy().withStyle(ChatFormatting.GREEN);
62-
if (count >= 0) {
63-
int max = stack.getMaxStackSize();
64-
int stacks = count / max;
65-
int rem = count % max;
66-
67-
if (stacks == 0) {
68-
text = Component.literal(Integer.toString(count));
69-
} else {
70-
Component stacksText = Component.literal(Integer.toString(stacks)).withStyle(ChatFormatting.AQUA);
71-
Component maxText = Component.literal(Integer.toString(max)).withStyle(ChatFormatting.GRAY);
72-
Component remText = Component.literal(Integer.toString(rem)).withStyle(ChatFormatting.YELLOW);
73-
text = Component.literal(count + " (")
74-
.append(stacksText)
75-
.append("*")
76-
.append(maxText)
77-
.append("+")
78-
.append(remText)
79-
.append(")");
80-
}
81-
} else if (count == -1) {
82-
text = Component.literal("\u221E");
83-
}
84-
}
85-
} else {
86-
text = customString;
87-
}
59+
Component text = customString != null ? customString : getRemainingCount(stack, count);
8860

8961
int color = FastColor.ARGB32.color(FastColor.as8BitChannel(alpha), 0xFFFFFF);
9062
gui.drawString(mc.font, text, x + 20, y + 6, color);
9163
}
9264
}
9365

66+
private static Component getRemainingCount(ItemStack displayStack, int totalCount) {
67+
if (displayStack.isEmpty()) {
68+
return Component.empty();
69+
}
70+
if (totalCount == -1) {
71+
return Component.literal("\u221E");
72+
}
73+
if (totalCount >= 0) {
74+
int max = displayStack.getMaxStackSize();
75+
int stacks = totalCount / max;
76+
NumberFormat format = LocaleHelper.getIntegerFormat();
77+
78+
String totalCountText = format.format(totalCount);
79+
if (stacks == 0) {
80+
return Component.literal(totalCountText);
81+
}
82+
int rem = totalCount % max;
83+
Component stacksText = Component.literal(format.format(stacks)).withStyle(ChatFormatting.AQUA);
84+
Component maxText = Component.literal(format.format(max)).withStyle(ChatFormatting.GRAY);
85+
if (rem > 0) {
86+
Component remText = Component.literal(format.format(rem)).withStyle(ChatFormatting.YELLOW);
87+
return Component.translatable("botaniamisc.template.parenthesis_suffix", totalCountText,
88+
Component.translatable("botaniamisc.count.stacks_with_remainder", stacksText, maxText, remText));
89+
}
90+
return Component.translatable("botaniamisc.template.parenthesis_suffix", totalCountText,
91+
Component.translatable("botaniamisc.count.stacks_no_remainder", stacksText, maxText));
92+
}
93+
return Component.empty();
94+
}
95+
9496
public static void tick() {
9597
if (ticks > 0) {
9698
--ticks;

Xplat/src/main/java/vazkii/botania/client/gui/TooltipHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static void onTooltipEvent(ItemStack stack, Item.TooltipContext context,
2828
}
2929

3030
public static Component getShiftInfoTooltip() {
31-
Component shift = Component.literal("SHIFT").withStyle(ChatFormatting.AQUA);
31+
Component shift = Component.translatable("key.keyboard.shift").withStyle(ChatFormatting.AQUA);
3232
return Component.translatable("botaniamisc.shiftinfo", shift).withStyle(ChatFormatting.GRAY);
3333
}
3434

Xplat/src/main/java/vazkii/botania/common/component/TooltipVisibility.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

Xplat/src/main/java/vazkii/botania/common/component/WandOfTheForestComponent.java

Lines changed: 0 additions & 76 deletions
This file was deleted.

Xplat/src/main/java/vazkii/botania/common/item/AstrolabeItem.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ public InteractionResultHolder<ItemStack> use(Level worldIn, Player playerIn, In
9090
int size = getSize(stack);
9191
int newSize = size == 11 ? 3 : size + 2;
9292
setSize(stack, newSize);
93-
ItemsRemainingRenderHandler.send(playerIn, stack, 0, Component.literal(newSize + "x" + newSize));
93+
// TODO: should not format number server-side; maybe just send translation key and count?
94+
ItemsRemainingRenderHandler.send(playerIn, stack, 0, Component.translatable("botaniamisc.astrolabe.size", newSize));
9495
}
9596

9697
return InteractionResultHolder.sidedSuccess(stack, worldIn.isClientSide());
@@ -293,9 +294,9 @@ public void appendHoverText(ItemStack stack, @Nullable TooltipContext context, L
293294
Block block = getBlock(stack, Objects.requireNonNull(context.registries()).lookupOrThrow(Registries.BLOCK));
294295
int size = getSize(stack);
295296

296-
tip.add(Component.literal(size + " x " + size));
297+
tip.add(Component.translatable("botaniamisc.astrolabe.size", size));
297298
if (block != Blocks.AIR) {
298-
tip.add(new ItemStack(block).getHoverName().plainCopy().withStyle(ChatFormatting.GRAY));
299+
tip.add(block.getName().withStyle(ChatFormatting.GRAY));
299300
}
300301
}
301302

Xplat/src/main/java/vazkii/botania/common/item/BlackHoleTalismanItem.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import net.minecraft.core.Direction;
1414
import net.minecraft.core.registries.BuiltInRegistries;
1515
import net.minecraft.network.chat.Component;
16-
import net.minecraft.network.chat.MutableComponent;
1716
import net.minecraft.resources.ResourceLocation;
1817
import net.minecraft.world.Container;
1918
import net.minecraft.world.InteractionHand;
@@ -158,17 +157,13 @@ public void inventoryTick(ItemStack talisman, Level world, Entity entity, int sl
158157

159158
@Override
160159
public Component getName(ItemStack stack) {
160+
Component name = super.getName(stack);
161161
Block block = getBlock(stack);
162-
ItemStack bstack = block == null ? ItemStack.EMPTY : new ItemStack(block);
163-
MutableComponent cand = super.getName(stack).copy();
164-
165-
if (!bstack.isEmpty()) {
166-
cand.append(" (");
167-
cand.append(bstack.getHoverName().copy().withStyle(ChatFormatting.GREEN));
168-
cand.append(")");
162+
if (block == null) {
163+
return name;
169164
}
170-
171-
return cand;
165+
Component blockName = block.getName().withStyle(ChatFormatting.GREEN);
166+
return Component.translatable("botaniamisc.template.parenthesis_suffix", name, blockName).withStyle(name.getStyle());
172167
}
173168

174169
public static boolean setBlock(ItemStack stack, Block block) {
@@ -190,7 +185,7 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List<Compon
190185
Block block = getBlock(stack);
191186
if (block != null) {
192187
int count = getBlockCount(stack);
193-
stacks.add(Component.literal(count + " ").append(new ItemStack(block).getHoverName()).withStyle(ChatFormatting.GRAY));
188+
stacks.add(Component.translatable("botaniamisc.template.num_and_name", count, block.getName()).withStyle(ChatFormatting.GRAY));
194189
}
195190

196191
stacks.add(Component.translatable(stack.has(BotaniaDataComponents.ACTIVE)

Xplat/src/main/java/vazkii/botania/common/item/ManaBlasterItem.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,23 +168,22 @@ private void appendHoverTextImpl(ItemStack stack, List<Component> tooltip) {
168168
name = lensAt.getHoverName();
169169
}
170170

171-
MutableComponent tip = Component.literal(" - ").append(name);
172-
tip.withStyle(i == pos ? ChatFormatting.GREEN : ChatFormatting.GRAY);
171+
MutableComponent tip = Component.translatable("botaniamisc.template.tooltip_list", name)
172+
.withStyle(i == pos ? ChatFormatting.GREEN : ChatFormatting.GRAY);
173173
tooltip.add(tip);
174174
}
175175
}
176176
}
177177

178178
@Override
179179
public Component getName(ItemStack stack) {
180+
Component name = super.getName(stack);
180181
ItemStack lens = getLens(stack);
181-
MutableComponent cmp = super.getName(stack).copy();
182-
if (!lens.isEmpty()) {
183-
cmp.append(" (");
184-
cmp.append(lens.getHoverName().copy().withStyle(ChatFormatting.GREEN));
185-
cmp.append(")");
182+
if (lens.isEmpty()) {
183+
return name;
186184
}
187-
return cmp;
185+
Component lensName = lens.getHoverName().copy().withStyle(ChatFormatting.GREEN);
186+
return Component.translatable("botaniamisc.template.parenthesis_suffix", name, lensName).withStyle(name.getStyle());
188187
}
189188

190189
public static boolean hasClip(ItemStack stack) {

Xplat/src/main/java/vazkii/botania/common/item/SextantItem.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,10 +278,9 @@ private static double calculateRadius(ItemStack stack, LivingEntity living) {
278278

279279
@Override
280280
public Component getName(ItemStack stack) {
281-
Component mode = Component.literal(" (")
282-
.append(Component.translatable(getModeString(stack)))
283-
.append(")");
284-
return super.getName(stack).plainCopy().append(mode);
281+
Component mode = Component.translatable(getModeString(stack));
282+
Component name = super.getName(stack);
283+
return Component.translatable("botaniamisc.template.parenthesis_suffix", name, mode).withStyle(name.getStyle());
285284
}
286285

287286
public static String getModeString(ItemStack stack) {

Xplat/src/main/java/vazkii/botania/common/item/WandOfTheForestItem.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -520,10 +520,9 @@ public void addToCreativeTab(Item me, CreativeModeTab.Output output) {
520520

521521
@Override
522522
public Component getName(ItemStack stack) {
523-
Component mode = Component.literal(" (")
524-
.append(Component.translatable(getModeString(stack)).withStyle(modeChatFormatting))
525-
.append(")");
526-
return super.getName(stack).plainCopy().append(mode);
523+
Component mode = Component.translatable(getModeString(stack)).withStyle(modeChatFormatting);
524+
Component name = super.getName(stack);
525+
return Component.translatable("botaniamisc.template.parenthesis_suffix", name, mode).withStyle(name.getStyle());
527526
}
528527

529528
public static ItemStack setColors(ItemStack wand, DyeColor color1, DyeColor color2) {

Xplat/src/main/java/vazkii/botania/common/item/equipment/armor/manasteel/ManasteelArmorItem.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ public void addInformationAfterShift(ItemStack stack, TooltipContext context, Li
9494
addArmorSetDescription(stack, list);
9595
ItemStack[] stacks = getArmorSetStacks();
9696
for (ItemStack armor : stacks) {
97-
MutableComponent cmp = Component.literal(" - ").append(armor.getHoverName());
9897
EquipmentSlot slot = ((ArmorItem) armor.getItem()).getEquipmentSlot();
99-
cmp.withStyle(hasArmorSetItem(player, slot) ? ChatFormatting.GREEN : ChatFormatting.GRAY);
98+
MutableComponent cmp = Component.translatable("botaniamisc.template.tooltip_list", armor.getHoverName())
99+
.withStyle(hasArmorSetItem(player, slot) ? ChatFormatting.GREEN : ChatFormatting.GRAY);
100100
list.add(cmp);
101101
}
102102
if (hasPhantomInk(stack)) {
@@ -155,12 +155,11 @@ public MutableComponent getArmorSetName() {
155155
}
156156

157157
private Component getArmorSetTitle(Player player) {
158-
Component end = getArmorSetName()
159-
.append(" (" + getSetPiecesEquipped(player) + "/" + getArmorSetStacks().length + ")")
158+
Component pieces = Component.translatable("botaniamisc.template.n_of_m",
159+
getSetPiecesEquipped(player), getArmorSetStacks().length);
160+
Component setInfo = Component.translatable("botaniamisc.template.parenthesis_suffix", getArmorSetName(), pieces)
160161
.withStyle(ChatFormatting.GRAY);
161-
return Component.translatable("botaniamisc.armorset")
162-
.append(" ")
163-
.append(end);
162+
return Component.translatable("botaniamisc.armorset", setInfo);
164163
}
165164

166165
public void addArmorSetDescription(ItemStack stack, List<Component> list) {

0 commit comments

Comments
 (0)