diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java index ce15e487e..e62d7786f 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java @@ -136,7 +136,7 @@ public class BasinCategory extends CreateRecipeCategory { AllGuiTextures heatBar = noHeat ? AllGuiTextures.JEI_NO_HEAT_BAR : AllGuiTextures.JEI_HEAT_BAR; heatBar.render(matrixStack, 4, 80); - Minecraft.getInstance().font.draw(matrixStack, Lang.translate(requiredHeat.getTranslationKey()), 9, + Minecraft.getInstance().font.draw(matrixStack, Lang.translateDirect(requiredHeat.getTranslationKey()), 9, 86, requiredHeat.getColor()); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java index 773ef0049..4ed8d74f9 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java @@ -77,7 +77,7 @@ public abstract class CreateRecipeCategory> implements IReci @Override public Component getTitle() { - return Lang.translate("recipe." + name); + return Lang.translateDirect("recipe." + name); } @Override @@ -125,7 +125,7 @@ public abstract class CreateRecipeCategory> implements IReci return (view, tooltip) -> { float chance = output.getChance(); if (chance != 1) - tooltip.add(1, Lang.translate("recipe.processing.chance", chance < 0.01 ? "<1" : (int) (chance * 100)) + tooltip.add(1, Lang.translateDirect("recipe.processing.chance", chance < 0.01 ? "<1" : (int) (chance * 100)) .withStyle(ChatFormatting.GOLD)); }; } @@ -168,7 +168,7 @@ public abstract class CreateRecipeCategory> implements IReci } int amount = mbAmount == -1 ? fluidStack.getAmount() : mbAmount; - Component text = new TextComponent(String.valueOf(amount)).append(Lang.translate("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD); + Component text = new TextComponent(String.valueOf(amount)).append(Lang.translateDirect("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD); if (tooltip.isEmpty()) tooltip.add(0, text); else { diff --git a/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java index 6886a384d..93f898f5b 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java @@ -47,7 +47,7 @@ public class DeployingCategory extends CreateRecipeCategory tooltip.add(1, Lang.translate("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD))); + handItemSlot.addTooltipCallback((recipeSlotView, tooltip) -> tooltip.add(1, Lang.translateDirect("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD))); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java index bfa8c0386..4533509eb 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java @@ -47,7 +47,7 @@ public class ItemApplicationCategory extends CreateRecipeCategory tooltip.add(1, Lang.translate("recipe.deploying.not_consumed") + ? (view, tooltip) -> tooltip.add(1, Lang.translateDirect("recipe.deploying.not_consumed") .withStyle(ChatFormatting.GOLD)) : (view, tooltip) -> {} ); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java index 34638a8ed..ed7ee5d9f 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java @@ -38,7 +38,7 @@ public abstract class ProcessingViaFanCategory> extends Crea public static Supplier getFan(String name) { return () -> AllBlocks.ENCASED_FAN.asStack() - .setHoverName(Lang.translate("recipe." + name + ".fan").withStyle(style -> style.withItalic(false))); + .setHoverName(Lang.translateDirect("recipe." + name + ".fan").withStyle(style -> style.withItalic(false))); } @Override diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java index 9c1681e53..f1c00c5ec 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java @@ -63,7 +63,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory getTooltipStrings(SequencedAssemblyRecipe recipe, IRecipeSlotsView iRecipeSlotsView, double mouseX, double mouseY) { List tooltip = new ArrayList<>(); - TranslatableComponent junk = Lang.translate("recipe.assembly.junk"); + TranslatableComponent junk = Lang.translateDirect("recipe.assembly.junk"); boolean singleOutput = recipe.getOutputChance() == 1; boolean willRepeat = recipe.getLoops() > 1; @@ -164,7 +164,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory= minX && mouseX < maxX && mouseY >= minY && mouseY < maxY) { float chance = recipe.getOutputChance(); tooltip.add(junk); - tooltip.add(Lang.translate("recipe.processing.chance", chance < 0.01 ? "<1" : 100 - (int) (chance * 100)) + tooltip.add(Lang.translateDirect("recipe.processing.chance", chance < 0.01 ? "<1" : 100 - (int) (chance * 100)) .withStyle(ChatFormatting.GOLD)); return tooltip; } @@ -174,7 +174,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory= minX && mouseX < maxX && mouseY >= minY && mouseY < maxY) { - tooltip.add(Lang.translate("recipe.assembly.repeat", recipe.getLoops())); + tooltip.add(Lang.translateDirect("recipe.assembly.repeat", recipe.getLoops())); return tooltip; } @@ -192,7 +192,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory sequencedRecipe = sequence.get(i); SequencedAssemblySubCategory subCategory = getSubCategory(sequencedRecipe); if (relativeX >= 0 && relativeX < subCategory.getWidth()) { - tooltip.add(Lang.translate("recipe.assembly.step", i + 1)); + tooltip.add(Lang.translateDirect("recipe.assembly.step", i + 1)); tooltip.add(sequencedRecipe.getAsAssemblyRecipe() .getDescriptionForAssembly() .plainCopy() diff --git a/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java index 1536f96fc..8e70946eb 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java @@ -111,7 +111,7 @@ public abstract class SequencedAssemblySubCategory { if (recipe.getAsAssemblyRecipe() instanceof DeployerApplicationRecipe deployerRecipe && deployerRecipe.shouldKeepHeldItem()) { slot.addTooltipCallback( - (recipeSlotView, tooltip) -> tooltip.add(1, Lang.translate("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD)) + (recipeSlotView, tooltip) -> tooltip.add(1, Lang.translateDirect("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD)) ); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/GeneratingKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/GeneratingKineticTileEntity.java index ccabf1a74..d9dfcb467 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/GeneratingKineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/GeneratingKineticTileEntity.java @@ -4,13 +4,13 @@ import java.util.List; import com.simibubi.create.content.contraptions.KineticNetwork; import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; +import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -57,31 +57,35 @@ public abstract class GeneratingKineticTileEntity extends KineticTileEntity { @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { boolean added = super.addToGoggleTooltip(tooltip, isPlayerSneaking); + if (!StressImpact.isEnabled()) + return added; float stressBase = calculateAddedStressCapacity(); - if (stressBase != 0 && IRotate.StressImpact.isEnabled()) { - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("gui.goggles.generator_stats"))); - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("tooltip.capacityProvided").withStyle(ChatFormatting.GRAY))); + if (Mth.equal(stressBase, 0)) + return added; - float speed = getTheoreticalSpeed(); - if (speed != getGeneratedSpeed() && speed != 0) - stressBase *= getGeneratedSpeed() / speed; + Lang.translate("gui.goggles.generator_stats") + .forGoggles(tooltip); + Lang.translate("tooltip.capacityProvided") + .style(ChatFormatting.GRAY) + .forGoggles(tooltip); - speed = Math.abs(speed); - float stressTotal = stressBase * speed; + float speed = getTheoreticalSpeed(); + if (speed != getGeneratedSpeed() && speed != 0) + stressBase *= getGeneratedSpeed() / speed; + speed = Math.abs(speed); - tooltip.add( - componentSpacing.plainCopy() - .append(new TextComponent(" " + IHaveGoggleInformation.format(stressTotal)) - .append(Lang.translate("generic.unit.stress")) - .withStyle(ChatFormatting.AQUA)) - .append(" ") - .append(Lang.translate("gui.goggles.at_current_speed").withStyle(ChatFormatting.DARK_GRAY))); + float stressTotal = stressBase * speed; - added = true; - } + Lang.number(stressTotal) + .translate("generic.unit.stress") + .style(ChatFormatting.AQUA) + .space() + .add(Lang.translate("gui.goggles.at_current_speed") + .style(ChatFormatting.DARK_GRAY)) + .forGoggles(tooltip, 1); - return added; + return true; } public void updateGeneratedRotation() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/IRotate.java b/src/main/java/com/simibubi/create/content/contraptions/base/IRotate.java index a39069978..089d86101 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/IRotate.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/IRotate.java @@ -1,18 +1,15 @@ package com.simibubi.create.content.contraptions.base; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; @@ -49,9 +46,11 @@ public interface IRotate extends IWrenchable { public float getSpeedValue() { switch (this) { case FAST: - return AllConfigs.SERVER.kinetics.fastSpeed.get().floatValue(); + return AllConfigs.SERVER.kinetics.fastSpeed.get() + .floatValue(); case MEDIUM: - return AllConfigs.SERVER.kinetics.mediumSpeed.get().floatValue(); + return AllConfigs.SERVER.kinetics.mediumSpeed.get() + .floatValue(); case SLOW: return 1; case NONE: @@ -72,19 +71,26 @@ public interface IRotate extends IWrenchable { return NONE; } - public static Component getFormattedSpeedText(float speed, boolean overstressed) { + public static LangBuilder getFormattedSpeedText(float speed, boolean overstressed) { SpeedLevel speedLevel = of(speed); + LangBuilder builder = Lang.text(ItemDescription.makeProgressBar(3, speedLevel.ordinal())); - MutableComponent level = new TextComponent(ItemDescription.makeProgressBar(3, speedLevel.ordinal())); - level.append(Lang.translate("tooltip.speedRequirement." + Lang.asId(speedLevel.name()))); - level.append(" (" + IHaveGoggleInformation.format(Math.abs(speed))).append(Lang.translate("generic.unit.rpm")).append(") "); + builder.translate("tooltip.speedRequirement." + Lang.asId(speedLevel.name())) + .space() + .text("(") + .add(Lang.number(Math.abs(speed))) + .space() + .translate("generic.unit.rpm") + .text(")") + .space(); if (overstressed) - level.withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.STRIKETHROUGH); + builder.style(ChatFormatting.DARK_GRAY) + .style(ChatFormatting.STRIKETHROUGH); else - level.withStyle(speedLevel.getTextColor()); + builder.style(speedLevel.getTextColor()); - return level; + return builder; } } @@ -125,14 +131,12 @@ public interface IRotate extends IWrenchable { return !AllConfigs.SERVER.kinetics.disableStress.get(); } - public static Component getFormattedStressText(double stressPercent) { + public static LangBuilder getFormattedStressText(double stressPercent) { StressImpact stressLevel = of(stressPercent); - - MutableComponent level = new TextComponent(ItemDescription.makeProgressBar(3, Math.min(stressLevel.ordinal() + 1, 3))); - level.append(Lang.translate("tooltip.stressImpact." + Lang.asId(stressLevel.name()))); - level.append(String.format(" (%s%%) ", (int) (stressPercent * 100))); - - return level.withStyle(stressLevel.getRelativeColor()); + return Lang.text(ItemDescription.makeProgressBar(3, Math.min(stressLevel.ordinal() + 1, 3))) + .translate("tooltip.stressImpact." + Lang.asId(stressLevel.name())) + .text(String.format(" (%s%%) ", (int) (stressPercent * 100))) + .style(stressLevel.getRelativeColor()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java index eb784a698..4f875beb6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java @@ -35,7 +35,6 @@ import net.minecraft.core.Direction.AxisDirection; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -46,8 +45,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; -public class KineticTileEntity extends SmartTileEntity - implements IHaveGoggleInformation, IHaveHoveringInformation { +public class KineticTileEntity extends SmartTileEntity implements IHaveGoggleInformation, IHaveHoveringInformation { public @Nullable Long network; public @Nullable BlockPos source; @@ -93,7 +91,7 @@ public class KineticTileEntity extends SmartTileEntity super.tick(); effects.tick(); - + preventSpeedUpdate = 0; if (level.isClientSide) { @@ -399,9 +397,9 @@ public class KineticTileEntity extends SmartTileEntity if (overStressed && AllConfigs.CLIENT.enableOverstressedTooltip.get()) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.stressometer.overstressed") + .append(Lang.translateDirect("gui.stressometer.overstressed") .withStyle(GOLD))); - Component hint = Lang.translate("gui.contraptions.network_overstressed"); + Component hint = Lang.translateDirect("gui.contraptions.network_overstressed"); List cutString = TooltipHelper.cutTextComponent(hint, GRAY, ChatFormatting.WHITE); for (int i = 0; i < cutString.size(); i++) tooltip.add(componentSpacing.plainCopy() @@ -411,10 +409,11 @@ public class KineticTileEntity extends SmartTileEntity if (notFastEnough) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.speedRequirement") + .append(Lang.translateDirect("tooltip.speedRequirement") .withStyle(GOLD))); - Component hint = Lang.translate("gui.contraptions.not_fast_enough", I18n.get(getBlockState().getBlock() - .getDescriptionId())); + Component hint = + Lang.translateDirect("gui.contraptions.not_fast_enough", I18n.get(getBlockState().getBlock() + .getDescriptionId())); List cutString = TooltipHelper.cutTextComponent(hint, GRAY, ChatFormatting.WHITE); for (int i = 0; i < cutString.size(); i++) tooltip.add(componentSpacing.plainCopy() @@ -428,29 +427,30 @@ public class KineticTileEntity extends SmartTileEntity @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { boolean added = false; + + if (!StressImpact.isEnabled()) + return added; float stressAtBase = calculateStressApplied(); + if (Mth.equal(stressAtBase, 0)) + return added; - if (calculateStressApplied() != 0 && StressImpact.isEnabled()) { - tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.goggles.kinetic_stats"))); - tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.stressImpact") - .withStyle(ChatFormatting.GRAY))); + Lang.translate("gui.goggles.kinetic_stats") + .forGoggles(tooltip); + Lang.translate("tooltip.stressImpact") + .style(GRAY) + .forGoggles(tooltip); - float stressTotal = stressAtBase * Math.abs(getTheoreticalSpeed()); + float stressTotal = stressAtBase * Math.abs(getTheoreticalSpeed()); - tooltip.add(componentSpacing.plainCopy() - .append(new TextComponent(" " + IHaveGoggleInformation.format(stressTotal)) - .append(Lang.translate("generic.unit.stress")) - .append(" ") - .withStyle(ChatFormatting.AQUA)) - .append(Lang.translate("gui.goggles.at_current_speed") - .withStyle(ChatFormatting.DARK_GRAY))); + Lang.number(stressTotal) + .translate("generic.unit.stress") + .style(ChatFormatting.AQUA) + .space() + .add(Lang.translate("gui.goggles.at_current_speed") + .style(ChatFormatting.DARK_GRAY)) + .forGoggles(tooltip, 1); - added = true; - } - - return added; + return true; } @@ -582,7 +582,7 @@ public class KineticTileEntity extends SmartTileEntity protected boolean isNoisy() { return true; } - + public int getRotationAngleOffset(Axis axis) { return 0; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java index 8a7251ace..92126100d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java @@ -60,7 +60,7 @@ public class DeployerApplicationRecipe extends ItemApplicationRecipe implements .getItems(); if (matchingStacks.length == 0) return new TextComponent("Invalid"); - return Lang.translate("recipe.assembly.deploying_item", + return Lang.translateDirect("recipe.assembly.deploying_item", new TranslatableComponent(matchingStacks[0].getDescriptionId()).getString()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java index 2540b9bf7..682b626d7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java @@ -64,7 +64,7 @@ public class DeployerFakePlayer extends FakePlayer { @Override public Component getDisplayName() { - return Lang.translate("block.deployer.damage_source_name"); + return Lang.translateDirect("block.deployer.damage_source_name"); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java index 864aba99d..1e8c397c1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java @@ -32,11 +32,11 @@ public class CreativeMotorTileEntity extends GeneratingKineticTileEntity { CenteredSideValueBoxTransform slot = new CenteredSideValueBoxTransform( (motor, side) -> motor.getValue(CreativeMotorBlock.FACING) == side.getOpposite()); - generatedSpeed = new ScrollValueBehaviour(Lang.translate("generic.speed"), this, slot); + generatedSpeed = new ScrollValueBehaviour(Lang.translateDirect("generic.speed"), this, slot); generatedSpeed.between(-max, max); generatedSpeed.value = DEFAULT_SPEED; generatedSpeed.scrollableValue = DEFAULT_SPEED; - generatedSpeed.withUnit(i -> Lang.translate("generic.unit.rpm")); + generatedSpeed.withUnit(i -> Lang.translateDirect("generic.unit.rpm")); generatedSpeed.withCallback(i -> this.updateGeneratedRotation()); generatedSpeed.withStepFunction(CreativeMotorTileEntity::step); behaviours.add(generatedSpeed); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressingRecipe.java index d948c2b86..4ecff8535 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressingRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressingRecipe.java @@ -53,7 +53,7 @@ public class PressingRecipe extends ProcessingRecipe implements I @Override @OnlyIn(Dist.CLIENT) public Component getDescriptionForAssembly() { - return Lang.translate("recipe.assembly.pressing"); + return Lang.translateDirect("recipe.assembly.pressing"); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/CuttingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/CuttingRecipe.java index ca0cb2452..2c6c50c6d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/CuttingRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/CuttingRecipe.java @@ -53,7 +53,7 @@ public class CuttingRecipe extends ProcessingRecipe implements IA @Override @OnlyIn(Dist.CLIENT) public Component getDescriptionForAssembly() { - return Lang.translate("recipe.assembly.cutting"); + return Lang.translateDirect("recipe.assembly.cutting"); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java index 37c09f995..a97f5e0e0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java @@ -54,7 +54,7 @@ public class SteamEngineTileEntity extends SmartTileEntity implements IHaveGoggl @Override public void addBehaviours(List behaviours) { movementDirection = new ScrollOptionBehaviour<>(RotationDirection.class, - Lang.translate("contraptions.windmill.rotation_direction"), this, new SteamEngineValueBox()); + Lang.translateDirect("contraptions.windmill.rotation_direction"), this, new SteamEngineValueBox()); movementDirection.requiresWrench(); movementDirection.onlyActiveWhen(() -> { PoweredShaftTileEntity shaft = getShaft(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java index 2592650dd..0f2a0ecd2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java @@ -107,11 +107,11 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - String[] pitches = Lang.translate("generic.notes") + String[] pitches = Lang.translateDirect("generic.notes") .getString() .split(";"); TextComponent textComponent = new TextComponent(spacing); - tooltip.add(textComponent.append(Lang.translate("generic.pitch", pitches[pitch % pitches.length]))); + tooltip.add(textComponent.append(Lang.translateDirect("generic.pitch", pitches[pitch % pitches.length]))); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java index be28e486b..d9477f0c3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java @@ -22,7 +22,7 @@ public interface IDisplayAssemblyExceptions { tooltip.add(TextComponent.EMPTY); tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() - .append(Lang.translate("gui.assembly.exception") + .append(Lang.translateDirect("gui.assembly.exception") .withStyle(ChatFormatting.GOLD))); String text = e.component.getString(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java index 4f3cd05dd..c1faf28d4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java @@ -54,7 +54,7 @@ public class ClockworkBearingTileEntity extends KineticTileEntity public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); operationMode = new ScrollOptionBehaviour<>(ClockHands.class, - Lang.translate("contraptions.clockwork.clock_hands"), this, getMovementModeSlot()); + Lang.translateDirect("contraptions.clockwork.clock_hands"), this, getMovementModeSlot()); operationMode.requiresWrench(); behaviours.add(operationMode); registerAwardables(behaviours, AllAdvancements.CLOCKWORK_BEARING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index f0de28ec4..b02f94773 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -51,7 +51,7 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity @Override public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); - movementMode = new ScrollOptionBehaviour<>(RotationMode.class, Lang.translate("contraptions.movement_mode"), + movementMode = new ScrollOptionBehaviour<>(RotationMode.class, Lang.translateDirect("contraptions.movement_mode"), this, getMovementModeSlot()); movementMode.requiresWrench(); behaviours.add(movementMode); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java index 3be80d2d2..e9c5d7079 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java @@ -101,7 +101,7 @@ public class WindmillBearingTileEntity extends MechanicalBearingTileEntity { super.addBehaviours(behaviours); behaviours.remove(movementMode); movementDirection = new ScrollOptionBehaviour<>(RotationDirection.class, - Lang.translate("contraptions.windmill.rotation_direction"), this, getMovementModeSlot()); + Lang.translateDirect("contraptions.windmill.rotation_direction"), this, getMovementModeSlot()); movementDirection.requiresWrench(); movementDirection.withCallback($ -> onDirectionChanged()); behaviours.add(movementDirection); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java index f5024cb70..2a552461c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java @@ -41,7 +41,7 @@ public class ChassisTileEntity extends SmartTileEntity { @Override public void addBehaviours(List behaviours) { int max = AllConfigs.SERVER.kinetics.maxChassisRange.get(); - range = new BulkScrollValueBehaviour(Lang.translate("generic.range"), this, new CenteredSideValueBoxTransform(), + range = new BulkScrollValueBehaviour(Lang.translateDirect("generic.range"), this, new CenteredSideValueBoxTransform(), te -> ((ChassisTileEntity) te).collectChassisGroup()); range.requiresWrench(); range.between(1, max); @@ -56,7 +56,7 @@ public class ChassisTileEntity extends SmartTileEntity { public void initialize() { super.initialize(); if (getBlockState().getBlock() instanceof RadialChassisBlock) - range.setLabel(Lang.translate("generic.radius")); + range.setLabel(Lang.translateDirect("generic.radius")); } public int getRange() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsHandler.java index 1da4473a5..3017f10d3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsHandler.java @@ -40,7 +40,7 @@ public class ControlsHandler { controlsPos = controllerLocalPos; Minecraft.getInstance().player.displayClientMessage( - Lang.translate("contraption.controls.start_controlling", entity.getContraptionName()), true); + Lang.translateDirect("contraption.controls.start_controlling", entity.getContraptionName()), true); } public static void stopControlling() { @@ -57,7 +57,7 @@ public class ControlsHandler { controlsPos = null; currentlyPressed.clear(); - Minecraft.getInstance().player.displayClientMessage(Lang.translate("contraption.controls.stop_controlling"), + Minecraft.getInstance().player.displayClientMessage(Lang.translateDirect("contraption.controls.stop_controlling"), true); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java index d50a1b2d2..0ae9a855a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java @@ -234,7 +234,7 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay @Override public void addBehaviours(List behaviours) { movementMode = new ScrollOptionBehaviour<>(CartMovementMode.class, - Lang.translate("contraptions.cart_movement_mode"), this, getMovementModeSlot()); + Lang.translateDirect("contraptions.cart_movement_mode"), this, getMovementModeSlot()); movementMode.requiresWrench(); behaviours.add(movementMode); registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java index c257f6f5d..28c22731a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java @@ -218,7 +218,7 @@ public class MinecartContraptionItem extends Item { OrientedContraptionEntity contraption = (OrientedContraptionEntity) passengers.get(0); if(ContraptionMovementSetting.isNoPickup(contraption.getContraption().getBlocks().values())) { - player.displayClientMessage(Lang.translate("contraption.minecart_contraption_illegal_pickup") + player.displayClientMessage(Lang.translateDirect("contraption.minecart_contraption_illegal_pickup") .withStyle(ChatFormatting.RED), true); return; } @@ -236,7 +236,7 @@ public class MinecartContraptionItem extends Item { NbtIo.write(generatedStack.serializeNBT(), dataOutput); int estimatedPacketSize = dataOutput.toByteArray().length; if (estimatedPacketSize > 2_000_000) { - player.displayClientMessage(Lang.translate("contraption.minecart_contraption_too_big") + player.displayClientMessage(Lang.translateDirect("contraption.minecart_contraption_too_big") .withStyle(ChatFormatting.RED), true); return; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index ee18e0886..39e54a86e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -49,7 +49,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity @Override public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); - movementMode = new ScrollOptionBehaviour<>(MovementMode.class, Lang.translate("contraptions.movement_mode"), + movementMode = new ScrollOptionBehaviour<>(MovementMode.class, Lang.translateDirect("contraptions.movement_mode"), this, getMovementModeSlot()); movementMode.requiresWrench(); movementMode.withCallback(t -> waitingForSpeedChange = false); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandler.java index 2d67f7c72..d833d5a29 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandler.java @@ -177,7 +177,7 @@ public class CouplingHandler { public static void status(Player player, String key) { if (player == null) return; - player.displayClientMessage(Lang.translate("minecart_coupling." + key), true); + player.displayClientMessage(Lang.translateDirect("minecart_coupling." + key), true); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java index 432686c07..1b04a1343 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java @@ -72,7 +72,7 @@ public class FillingRecipe extends ProcessingRecipe implements IA .getMatchingFluidStacks(); if (matchingFluidStacks.size() == 0) return new TextComponent("Invalid"); - return Lang.translate("recipe.assembly.spout_filling_fluid", + return Lang.translateDirect("recipe.assembly.spout_filling_fluid", new TranslatableComponent(matchingFluidStacks.get(0) .getTranslationKey()).getString()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java index 974e88c1f..b1263c661 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java @@ -150,7 +150,8 @@ public class BoilerData { calcMinMaxForSize(boilerSize); tooltip.add(indent.plainCopy() - .append(Lang.translate("boiler.status", getHeatLevelTextComponent().withStyle(ChatFormatting.GREEN)))); + .append( + Lang.translateDirect("boiler.status", getHeatLevelTextComponent().withStyle(ChatFormatting.GREEN)))); tooltip.add(indent2.plainCopy() .append(getSizeComponent(true, false))); tooltip.add(indent2.plainCopy() @@ -162,22 +163,22 @@ public class BoilerData { return true; int boilerLevel = Math.min(activeHeat, Math.min(maxHeatForWater, maxHeatForSize)); - double totalSU = getEngineEfficiency(boilerSize) * 16 * Math.max(boilerLevel, attachedEngines) * BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get()); - Component capacity = - new TextComponent(IHaveGoggleInformation.format(totalSU)).append(Lang.translate("generic.unit.stress")) - .withStyle(ChatFormatting.AQUA); - Component engines = (attachedEngines == 1 ? Lang.translate("boiler.via_one_engine") - : Lang.translate("boiler.via_engines", attachedEngines)).withStyle(ChatFormatting.DARK_GRAY); - tooltip.add(indent); - tooltip.add(indent.plainCopy() - .append(Lang.translate("tooltip.capacityProvided") - .withStyle(ChatFormatting.GRAY))); - tooltip.add(indent2.plainCopy() - .append(capacity) - .append(engines)); + tooltip.add(Lang.empty()); + + Lang.translate("tooltip.capacityProvided") + .style(ChatFormatting.GRAY) + .forGoggles(tooltip); + + Lang.number(totalSU) + .translate("generic.unit.stress") + .style(ChatFormatting.AQUA) + .space() + .add((attachedEngines == 1 ? Lang.translate("boiler.via_one_engine") + : Lang.translate("boiler.via_engines", attachedEngines)).style(ChatFormatting.DARK_GRAY)) + .forGoggles(tooltip, 1); return true; } @@ -194,10 +195,10 @@ public class BoilerData { public MutableComponent getHeatLevelTextComponent() { int boilerLevel = Math.min(activeHeat, Math.min(maxHeatForWater, maxHeatForSize)); - return isPassive() ? Lang.translate("boiler.passive") - : (boilerLevel == 0 ? Lang.translate("boiler.idle") - : boilerLevel == 18 ? Lang.translate("boiler.max_lvl") - : Lang.translate("boiler.lvl", IHaveGoggleInformation.format(boilerLevel))); + return isPassive() ? Lang.translateDirect("boiler.passive") + : (boilerLevel == 0 ? Lang.translateDirect("boiler.idle") + : boilerLevel == 18 ? Lang.translateDirect("boiler.max_lvl") + : Lang.translateDirect("boiler.lvl", String.valueOf(boilerLevel))); } public MutableComponent getSizeComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) { @@ -222,9 +223,9 @@ public class BoilerData { ChatFormatting style1 = styles.length >= 1 ? styles[0] : ChatFormatting.GRAY; ChatFormatting style2 = styles.length >= 2 ? styles[1] : ChatFormatting.DARK_GRAY; - return Lang.translate("boiler." + label) + return Lang.translateDirect("boiler." + label) .withStyle(style1) - .append(Lang.translate("boiler." + label + "_dots") + .append(Lang.translateDirect("boiler." + label + "_dots") .withStyle(style2)) .append(base); } @@ -306,7 +307,7 @@ public class BoilerData { if (AllBlocks.STEAM_WHISTLE.has(attachedState) && WhistleBlock.getAttachedDirection(attachedState) .getOpposite() == d) { - if (level.getBlockEntity(attachedPos) instanceof WhistleTileEntity wte) + if (level.getBlockEntity(attachedPos)instanceof WhistleTileEntity wte) whistlePitches.add(wte.getPitchId()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java index 7f36c2e55..36ca4481e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java @@ -27,27 +27,27 @@ public class GoggleConfigScreen extends AbstractSimiScreen { Component componentSpacing = new TextComponent(" "); tooltip = new ArrayList<>(); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay1"))); + .append(Lang.translateDirect("gui.config.overlay1"))); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay2") + .append(Lang.translateDirect("gui.config.overlay2") .withStyle(ChatFormatting.GRAY))); tooltip.add(TextComponent.EMPTY); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay3"))); + .append(Lang.translateDirect("gui.config.overlay3"))); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay4"))); + .append(Lang.translateDirect("gui.config.overlay4"))); tooltip.add(TextComponent.EMPTY); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay5") + .append(Lang.translateDirect("gui.config.overlay5") .withStyle(ChatFormatting.GRAY))); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay6") + .append(Lang.translateDirect("gui.config.overlay6") .withStyle(ChatFormatting.GRAY))); tooltip.add(TextComponent.EMPTY); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay7"))); + .append(Lang.translateDirect("gui.config.overlay7"))); tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.config.overlay8"))); + .append(Lang.translateDirect("gui.config.overlay8"))); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java index e2b0a9ace..5e91641ee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java @@ -143,7 +143,7 @@ public class GoggleOverlayRenderer { tooltip.add(TextComponent.EMPTY); tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() - .append(Lang.translate("gui.goggles.pole_length")) + .append(Lang.translateDirect("gui.goggles.pole_length")) .append(new TextComponent(" " + poles))); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java index f7e97e222..0eeaf904f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java @@ -1,17 +1,14 @@ package com.simibubi.create.content.contraptions.goggles; -import java.text.NumberFormat; import java.util.List; -import java.util.Locale; import java.util.Optional; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -21,29 +18,30 @@ import net.minecraftforge.fluids.capability.IFluidHandler; * */ public interface IHaveGoggleInformation { - Format numberFormat = new Format(); + /** + * Use Lang.[...].forGoggles(list) + */ String spacing = " "; + + /** + * Use Lang.[...].forGoggles(list) + */ + @Deprecated Component componentSpacing = new TextComponent(spacing); /** * this method will be called when looking at a TileEntity that implemented this * interface * - * @return {@code true} if the tooltip creation was successful and should be displayed, - * or {@code false} if the overlay should not be displayed - * */ - default boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking){ + * @return {@code true} if the tooltip creation was successful and should be + * displayed, or {@code false} if the overlay should not be displayed + */ + default boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { return false; } - static String format(double d) { - return numberFormat.get() - .format(d).replace("\u00A0", " "); - } - - default boolean containedFluidTooltip(List tooltip, boolean isPlayerSneaking, LazyOptional handler) { - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("gui.goggles.fluid_container"))); - TranslatableComponent mb = Lang.translate("generic.unit.millibuckets"); + default boolean containedFluidTooltip(List tooltip, boolean isPlayerSneaking, + LazyOptional handler) { Optional resolve = handler.resolve(); if (!resolve.isPresent()) return false; @@ -52,7 +50,9 @@ public interface IHaveGoggleInformation { if (tank.getTanks() == 0) return false; - Component indent = new TextComponent(spacing + " "); + LangBuilder mb = Lang.translate("generic.unit.millibuckets"); + Lang.translate("gui.goggles.fluid_container") + .forGoggles(tooltip); boolean isEmpty = true; for (int i = 0; i < tank.getTanks(); i++) { @@ -60,17 +60,19 @@ public interface IHaveGoggleInformation { if (fluidStack.isEmpty()) continue; - Component fluidName = new TranslatableComponent(fluidStack.getTranslationKey()).withStyle(ChatFormatting.GRAY); - Component contained = new TextComponent(format(fluidStack.getAmount())).append(mb).withStyle(ChatFormatting.GOLD); - Component slash = new TextComponent(" / ").withStyle(ChatFormatting.GRAY); - Component capacity = new TextComponent(format(tank.getTankCapacity(i))).append(mb).withStyle(ChatFormatting.DARK_GRAY); + Lang.fluidName(fluidStack) + .style(ChatFormatting.GRAY) + .forGoggles(tooltip, 1); - tooltip.add(indent.plainCopy() - .append(fluidName)); - tooltip.add(indent.plainCopy() - .append(contained) - .append(slash) - .append(capacity)); + Lang.builder() + .add(Lang.number(fluidStack.getAmount()) + .add(mb) + .style(ChatFormatting.GOLD)) + .text(ChatFormatting.GRAY, " / ") + .add(Lang.number(tank.getTankCapacity(i)) + .add(mb) + .style(ChatFormatting.DARK_GRAY)) + .forGoggles(tooltip, 1); isEmpty = false; } @@ -80,39 +82,18 @@ public interface IHaveGoggleInformation { tooltip.remove(tooltip.size() - 1); return true; } - + if (!isEmpty) return true; - Component capacity = Lang.translate("gui.goggles.fluid_container.capacity").withStyle(ChatFormatting.GRAY); - Component amount = new TextComponent(format(tank.getTankCapacity(0))).append(mb).withStyle(ChatFormatting.GOLD); + Lang.translate("gui.goggles.fluid_container.capacity") + .add(Lang.number(tank.getTankCapacity(0)) + .add(mb) + .style(ChatFormatting.GOLD)) + .style(ChatFormatting.GRAY) + .forGoggles(tooltip, 1); - tooltip.add(indent.plainCopy() - .append(capacity) - .append(amount)); return true; } - class Format { - - private NumberFormat format = NumberFormat.getNumberInstance(Locale.ROOT); - - private Format() {} - - public NumberFormat get() { - return format; - } - - public void update() { - format = NumberFormat.getInstance(Minecraft.getInstance() - .getLanguageManager() - .getSelected() - .getJavaLocale()); - format.setMaximumFractionDigits(2); - format.setMinimumFractionDigits(0); - format.setGroupingUsed(true); - } - - } - } diff --git a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java index caad01c8b..1dca38cfe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java @@ -240,9 +240,9 @@ public class SequencedAssemblyRecipe implements Recipe { int step = sequencedAssemblyRecipe.getStep(stack); int total = length * sequencedAssemblyRecipe.loops; toolTip.add(new TextComponent("")); - toolTip.add(Lang.translate("recipe.sequenced_assembly") + toolTip.add(Lang.translateDirect("recipe.sequenced_assembly") .withStyle(ChatFormatting.GRAY)); - toolTip.add(Lang.translate("recipe.assembly.progress", step, total) + toolTip.add(Lang.translateDirect("recipe.assembly.progress", step, total) .withStyle(ChatFormatting.DARK_GRAY)); int remaining = total - step; @@ -253,7 +253,7 @@ public class SequencedAssemblyRecipe implements Recipe { Component textComponent = sequencedRecipe.getAsAssemblyRecipe() .getDescriptionForAssembly(); if (i == 0) - toolTip.add(Lang.translate("recipe.assembly.next", textComponent) + toolTip.add(Lang.translateDirect("recipe.assembly.next", textComponent) .withStyle(ChatFormatting.AQUA)); else toolTip.add(new TextComponent("-> ").append(textComponent) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java index 5af8de637..2756310ad 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java @@ -59,18 +59,18 @@ public class BlazeBurnerInteractionBehaviour extends MovingInteractionBehaviour if (train.runtime.paused && !train.runtime.completed) { train.runtime.paused = false; AllSoundEvents.CONFIRM.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translate("schedule.continued"), true); + player.displayClientMessage(Lang.translateDirect("schedule.continued"), true); return true; } if (!itemInHand.isEmpty()) { AllSoundEvents.DENY.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translate("schedule.remove_with_empty_hand"), true); + player.displayClientMessage(Lang.translateDirect("schedule.remove_with_empty_hand"), true); return true; } AllSoundEvents.playItemPickup(player); - player.displayClientMessage(Lang.translate( + player.displayClientMessage(Lang.translateDirect( train.runtime.isAutoSchedule ? "schedule.auto_removed_from_train" : "schedule.removed_from_train"), true); player.setItemInHand(activeHand, train.runtime.returnSchedule()); @@ -86,21 +86,21 @@ public class BlazeBurnerInteractionBehaviour extends MovingInteractionBehaviour if (schedule.entries.isEmpty()) { AllSoundEvents.DENY.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translate("schedule.no_stops"), true); + player.displayClientMessage(Lang.translateDirect("schedule.no_stops"), true); return true; } train.runtime.setSchedule(schedule, false); AllAdvancements.CONDUCTOR.awardTo(player); AllSoundEvents.CONFIRM.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translate("schedule.applied_to_train") + player.displayClientMessage(Lang.translateDirect("schedule.applied_to_train") .withStyle(ChatFormatting.GREEN), true); itemInHand.shrink(1); player.setItemInHand(activeHand, itemInHand.isEmpty() ? ItemStack.EMPTY : itemInHand); return true; } - player.displayClientMessage(Lang.translate("schedule.non_controlling_seat"), true); + player.displayClientMessage(Lang.translateDirect("schedule.non_controlling_seat"), true); AllSoundEvents.DENY.playOnServer(player.level, player.blockPosition(), 1, 1); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java index 62611bb58..9238ed52e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java @@ -45,11 +45,11 @@ public class SpeedControllerTileEntity extends KineticTileEntity { Integer max = AllConfigs.SERVER.kinetics.maxRotationSpeed.get(); targetSpeed = - new ScrollValueBehaviour(Lang.translate("generic.speed"), this, new ControllerValueBoxTransform()); + new ScrollValueBehaviour(Lang.translateDirect("generic.speed"), this, new ControllerValueBoxTransform()); targetSpeed.between(-max, max); targetSpeed.value = DEFAULT_SPEED; targetSpeed.moveText(new Vec3(9, 0, 10)); - targetSpeed.withUnit(i -> Lang.translate("generic.unit.rpm")); + targetSpeed.withUnit(i -> Lang.translateDirect("generic.unit.rpm")); targetSpeed.withCallback(i -> this.updateTargetRotation()); targetSpeed.withStepFunction(CreativeMotorTileEntity::step); behaviours.add(targetSpeed); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java index 4495a9d79..23bdf2048 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java @@ -32,7 +32,7 @@ public enum InstructionSpeedModifiers { static List getOptions() { List options = new ArrayList<>(); for (InstructionSpeedModifiers entry : values()) - options.add(Lang.translate(entry.translationKey)); + options.add(Lang.translateDirect(entry.translationKey)); return options; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java index 26d8d5f9d..087dfa4f9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java @@ -33,7 +33,7 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { private Vector> inputs; public SequencedGearshiftScreen(SequencedGearshiftTileEntity te) { - super(Lang.translate("gui.sequenced_gearshift.title")); + super(Lang.translateDirect("gui.sequenced_gearshift.title")); this.instructions = te.instructions; this.pos = te.getBlockPos(); compareTag = Instruction.serializeAll(instructions); @@ -78,13 +78,13 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { new SelectionScrollInput(x, y + rowHeight * row, 50, 18).forOptions(SequencerInstructions.getOptions()) .calling(state -> instructionUpdated(index, state)) .setState(instruction.instruction.ordinal()) - .titled(Lang.translate("gui.sequenced_gearshift.instruction")); + .titled(Lang.translateDirect("gui.sequenced_gearshift.instruction")); ScrollInput value = new ScrollInput(x + 58, y + rowHeight * row, 28, 18).calling(state -> instruction.value = state); ScrollInput direction = new SelectionScrollInput(x + 88, y + rowHeight * row, 28, 18) .forOptions(InstructionSpeedModifiers.getOptions()) .calling(state -> instruction.speedModifier = InstructionSpeedModifiers.values()[state]) - .titled(Lang.translate("gui.sequenced_gearshift.speed")); + .titled(Lang.translateDirect("gui.sequenced_gearshift.speed")); rowInputs.add(type); rowInputs.add(value); @@ -105,7 +105,7 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { value.active = value.visible = hasValue; if (hasValue) value.withRange(1, def.maxValue + 1) - .titled(Lang.translate(def.parameterKey)) + .titled(Lang.translateDirect(def.parameterKey)) .withShiftStep(def.shiftStep) .setState(instruction.value) .onChanged(); @@ -146,7 +146,7 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { SequencerInstructions def = instruction.instruction; def.background.render(ms, x, y + 14 + yOffset, this); - label(ms, 36, yOffset - 3, Lang.translate(def.translationKey)); + label(ms, 36, yOffset - 3, Lang.translateDirect(def.translationKey)); if (def.hasValueParameter) { String text = def.formatValue(instruction.value); int stringWidth = font.width(text); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencerInstructions.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencerInstructions.java index 76647943c..060a0df7e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencerInstructions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencerInstructions.java @@ -48,13 +48,13 @@ public enum SequencerInstructions { static List getOptions() { List options = new ArrayList<>(); for (SequencerInstructions entry : values()) - options.add(Lang.translate(entry.descriptiveTranslationKey)); + options.add(Lang.translateDirect(entry.descriptiveTranslationKey)); return options; } String formatValue(int value) { if (this == TURN_ANGLE) - return value + Lang.translate("generic.unit.degrees").getString(); + return value + Lang.translateDirect("generic.unit.degrees").getString(); if (this == TURN_DISTANCE) return value + "m"; if (this == DELAY) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java index 1884f07e8..681e16ec7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java @@ -470,7 +470,7 @@ public class BeltSlicer { return; if (feedback.langKey != null) - mc.player.displayClientMessage(Lang.translate(feedback.langKey) + mc.player.displayClientMessage(Lang.translateDirect(feedback.langKey) .withStyle(feedback.formatting), true); else mc.player.displayClientMessage(new TextComponent(""), true); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java index 7ea03b0e0..bdd77ba69 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java @@ -48,7 +48,7 @@ public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInf @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("gui.gauge.info_header"))); + tooltip.add(componentSpacing.plainCopy().append(Lang.translateDirect("gui.gauge.info_header"))); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java index 216d9185c..fb48c7209 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java @@ -27,8 +27,8 @@ public class SpeedGaugeTileEntity extends GaugeTileEntity { dialTarget = getDialTarget(speed); color = Color.mixColors(SpeedLevel.of(speed) - .getColor(), 0xffffff, .25f); - + .getColor(), 0xffffff, .25f); + setChanged(); } @@ -55,10 +55,11 @@ public class SpeedGaugeTileEntity extends GaugeTileEntity { @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { super.addToGoggleTooltip(tooltip, isPlayerSneaking); - - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("gui.speedometer.title").withStyle(ChatFormatting.GRAY))); - tooltip.add(componentSpacing.plainCopy().append(SpeedLevel.getFormattedSpeedText(speed, isOverStressed()))); - + Lang.translate("gui.speedometer.title") + .style(ChatFormatting.GRAY) + .forGoggles(tooltip); + SpeedLevel.getFormattedSpeedText(speed, isOverStressed()) + .forGoggles(tooltip); return true; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java index af9299924..665226cb1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java @@ -3,20 +3,18 @@ package com.simibubi.create.content.contraptions.relays.gauge; import java.util.List; import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -83,37 +81,39 @@ public class StressGaugeTileEntity extends GaugeTileEntity { double capacity = getNetworkCapacity(); double stressFraction = getNetworkStress() / (capacity == 0 ? 1 : capacity); - tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.stressometer.title") - .withStyle(ChatFormatting.GRAY))); + Lang.translate("gui.stressometer.title") + .style(ChatFormatting.GRAY) + .forGoggles(tooltip); if (getTheoreticalSpeed() == 0) - tooltip.add(new TextComponent(spacing + ItemDescription.makeProgressBar(3, 0)) - .append(Lang.translate("gui.stressometer.no_rotation")) - .withStyle(ChatFormatting.DARK_GRAY)); + Lang.text(ItemDescription.makeProgressBar(3, 0)) + .translate("gui.stressometer.no_rotation") + .style(ChatFormatting.DARK_GRAY) + .forGoggles(tooltip); else { - tooltip.add(componentSpacing.plainCopy() - .append(StressImpact.getFormattedStressText(stressFraction))); - - tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("gui.stressometer.capacity") - .withStyle(ChatFormatting.GRAY))); + StressImpact.getFormattedStressText(stressFraction) + .forGoggles(tooltip); + Lang.translate("gui.stressometer.capacity") + .style(ChatFormatting.GRAY) + .forGoggles(tooltip); double remainingCapacity = capacity - getNetworkStress(); - Component su = Lang.translate("generic.unit.stress"); - MutableComponent stressTooltip = componentSpacing.plainCopy() - .append(new TextComponent(" " + IHaveGoggleInformation.format(remainingCapacity)).append(su.plainCopy()) - .withStyle(StressImpact.of(stressFraction) - .getRelativeColor())); - if (remainingCapacity != capacity) { - stressTooltip.append(new TextComponent(" / ").withStyle(ChatFormatting.GRAY)) - .append(new TextComponent(IHaveGoggleInformation.format(capacity)).append(su.plainCopy()) - .withStyle(ChatFormatting.DARK_GRAY)); - } - tooltip.add(stressTooltip); + LangBuilder su = Lang.translate("generic.unit.stress"); + LangBuilder stressTip = Lang.number(remainingCapacity) + .add(su) + .style(StressImpact.of(stressFraction) + .getRelativeColor()); + + if (remainingCapacity != capacity) + stressTip.text(ChatFormatting.GRAY, " / ") + .add(Lang.number(capacity) + .add(su) + .style(ChatFormatting.DARK_GRAY)); + + stressTip.forGoggles(tooltip, 1); } - + if (!worldPosition.equals(lastSent)) AllPackets.channel.sendToServer(new GaugeObservedPacket(lastSent = worldPosition)); diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java index c12c2da0d..c84a256fe 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java @@ -63,7 +63,7 @@ public class BackTankUtil { return; boolean depleted = threshold == 1; - MutableComponent component = Lang.translate(depleted ? "backtank.depleted" : "backtank.low"); + MutableComponent component = Lang.translateDirect(depleted ? "backtank.depleted" : "backtank.low"); AllSoundEvents.DENY.play(player.level, null, player.blockPosition(), 1, 1.25f); AllSoundEvents.STEAM.play(player.level, null, player.blockPosition(), .5f, .5f); diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java index f248e25da..a5c77c3b5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java @@ -34,8 +34,8 @@ public class SymmetryWandScreen extends AbstractSimiScreen { private Label labelAlign; private IconButton confirmButton; - private final Component mirrorType = Lang.translate("gui.symmetryWand.mirrorType"); - private final Component orientation = Lang.translate("gui.symmetryWand.orientation"); + private final Component mirrorType = Lang.translateDirect("gui.symmetryWand.mirrorType"); + private final Component orientation = Lang.translateDirect("gui.symmetryWand.orientation"); private SymmetryMirror currentElement; private ItemStack wand; diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java index e3072bbf9..e1342bf4b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java @@ -105,7 +105,7 @@ public class CrossPlaneMirror extends SymmetryMirror { @Override public List getAlignToolTips() { - return ImmutableList.of(Lang.translate("orientation.orthogonal"), Lang.translate("orientation.diagonal")); + return ImmutableList.of(Lang.translateDirect("orientation.orthogonal"), Lang.translateDirect("orientation.diagonal")); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java index 44ee529d3..06b6a0ceb 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java @@ -101,7 +101,7 @@ public class PlaneMirror extends SymmetryMirror { @Override public List getAlignToolTips() { - return ImmutableList.of(Lang.translate("orientation.alongZ"), Lang.translate("orientation.alongX")); + return ImmutableList.of(Lang.translateDirect("orientation.alongZ"), Lang.translateDirect("orientation.alongX")); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java index d30e52ddf..0ad3e979e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java @@ -45,8 +45,8 @@ public abstract class SymmetryMirror { } public static List getMirrors() { - return ImmutableList.of(Lang.translate("symmetry.mirror.plane"), Lang.translate("symmetry.mirror.doublePlane"), - Lang.translate("symmetry.mirror.triplePlane")); + return ImmutableList.of(Lang.translateDirect("symmetry.mirror.plane"), Lang.translateDirect("symmetry.mirror.doublePlane"), + Lang.translateDirect("symmetry.mirror.triplePlane")); } public StringRepresentable getOrientation() { diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java index 07c7adf63..a0d9a9a61 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java @@ -66,7 +66,7 @@ public class TriplePlaneMirror extends SymmetryMirror { @Override public List getAlignToolTips() { - return ImmutableList.of(Lang.translate("orientation.horizontal")); + return ImmutableList.of(Lang.translateDirect("orientation.horizontal")); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java index 8d09f7b39..0bf111bec 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java @@ -81,7 +81,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { if (state == State.DETACH) { - tip = Lang.translate("toolbox.outOfRange"); + tip = Lang.translateDirect("toolbox.outOfRange"); if (hoveredX > -20 && hoveredX < 20 && hoveredY > -80 && hoveredY < -20) hoveredSlot = UNEQUIP; @@ -99,7 +99,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { ms.translate(0.5, -0.5, 0); if (!scrollMode && hoveredSlot == UNEQUIP) { AllGuiTextures.TOOLBELT_SLOT_HIGHLIGHT.render(ms, -13, -13, this); - tip = Lang.translate("toolbox.detach") + tip = Lang.translateDirect("toolbox.detach") .withStyle(ChatFormatting.GOLD); } ms.popPose(); @@ -117,7 +117,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { ms.translate(0.5, -0.5, 0); if (!scrollMode && hoveredSlot == DEPOSIT) { AllGuiTextures.TOOLBELT_SLOT_HIGHLIGHT.render(ms, -13, -13, this); - tip = Lang.translate(state == State.SELECT_BOX ? "toolbox.depositAll" : "toolbox.depositBox") + tip = Lang.translateDirect(state == State.SELECT_BOX ? "toolbox.depositAll" : "toolbox.depositBox") .withStyle(ChatFormatting.GOLD); } ms.popPose(); @@ -179,7 +179,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { (scrollMode ? AllIcons.I_REFRESH : AllIcons.I_FLIP).render(ms, -9, -9, this); if (!scrollMode && UNEQUIP == hoveredSlot) { AllGuiTextures.TOOLBELT_SLOT_HIGHLIGHT.render(ms, -13, -13, this); - tip = Lang.translate("toolbox.unequip", minecraft.player.getMainHandItem() + tip = Lang.translateDirect("toolbox.unequip", minecraft.player.getMainHandItem() .getHoverName()) .withStyle(ChatFormatting.GOLD); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java index 5a3b199c7..13110e32b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java @@ -60,7 +60,7 @@ public class ToolboxScreen extends AbstractSimiContainerScreen disposeButton.withCallback(() -> { AllPackets.channel.sendToServer(new ToolboxDisposeAllPacket(menu.contentHolder.getBlockPos())); }); - disposeButton.setToolTip(Lang.translate("toolbox.depositBox")); + disposeButton.setToolTip(Lang.translateDirect("toolbox.depositBox")); addRenderableWidget(disposeButton); extraAreas = ImmutableList.of( diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java index 45e25aeee..3999c10dc 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java @@ -61,9 +61,7 @@ public class BlueprintScreen extends AbstractSimiContainerScreenat(x + background.width + 20, y + background.height - 32, 0) + GuiGameElement.of(AllBlockPartials.CRAFTING_BLUEPRINT_1x1).at(x + background.width + 20, y + background.height - 32, 0) .rotate(45, -45, 22.5f) .scale(40) .render(ms); @@ -93,8 +91,7 @@ public class BlueprintScreen extends AbstractSimiContainerScreen(), hoveredSlot.getSlotIndex(), true), x, y, - font); + renderComponentTooltip(ms, addToTooltip(new LinkedList<>(), hoveredSlot.getSlotIndex(), true), x, y, font); } @Override @@ -110,26 +107,26 @@ public class BlueprintScreen extends AbstractSimiContainerScreen brushOptions = Lang.translatedOptions("gui.terrainzapper.brush", "cuboid", "sphere", "cylinder", "surface", "cluster"); @@ -84,7 +84,7 @@ public class WorldshaperScreen extends ZapperScreen { brushLabel = new Label(x + 61, y + 25, TextComponent.EMPTY).withShadow(); brushInput = new SelectionScrollInput(x + 56, y + 20, 77, 18).forOptions(brushOptions) - .titled(Lang.translate("gui.terrainzapper.brush")) + .titled(Lang.translateDirect("gui.terrainzapper.brush")) .writingTo(brushLabel) .calling(brushIndex -> { currentBrush = TerrainBrushes.values()[brushIndex]; @@ -165,12 +165,12 @@ public class WorldshaperScreen extends ZapperScreen { followDiagonalsIndicator.state = followDiagonalsIndicator.state == State.OFF ? State.ON : State.OFF; currentFollowDiagonals = !currentFollowDiagonals; }); - followDiagonals.setToolTip(Lang.translate("gui.terrainzapper.searchDiagonal")); + followDiagonals.setToolTip(Lang.translateDirect("gui.terrainzapper.searchDiagonal")); acrossMaterials.withCallback(() -> { acrossMaterialsIndicator.state = acrossMaterialsIndicator.state == State.OFF ? State.ON : State.OFF; currentAcrossMaterials = !currentAcrossMaterials; }); - acrossMaterials.setToolTip(Lang.translate("gui.terrainzapper.searchFuzzy")); + acrossMaterials.setToolTip(Lang.translateDirect("gui.terrainzapper.searchFuzzy")); addRenderableWidget(followDiagonals); addRenderableWidget(followDiagonalsIndicator); addRenderableWidget(acrossMaterials); @@ -196,7 +196,7 @@ public class WorldshaperScreen extends ZapperScreen { toolButton.active = false; currentTool = tool; }); - toolButton.setToolTip(Lang.translate("gui.terrainzapper.tool." + tool.translationKey)); + toolButton.setToolTip(Lang.translateDirect("gui.terrainzapper.tool." + tool.translationKey)); toolButtons.add(toolButton); } @@ -228,7 +228,7 @@ public class WorldshaperScreen extends ZapperScreen { placementButton.active = false; currentPlacement = option; }); - placementButton.setToolTip(Lang.translate("gui.terrainzapper.placement." + option.translationKey)); + placementButton.setToolTip(Lang.translateDirect("gui.terrainzapper.placement." + option.translationKey)); placementButtons.add(placementButton); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index 32f6e6be7..cc6c2a566 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -91,7 +91,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); behaviours.add(selectionMode = new ScrollOptionBehaviour<>(SelectionMode.class, - Lang.translate("logistics.when_multiple_outputs_available"), this, + Lang.translateDirect("logistics.when_multiple_outputs_available"), this, new CenteredSideValueBoxTransform((state, d) -> d == Direction.UP))); selectionMode.requiresWrench(); @@ -748,16 +748,16 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave return false; tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.brass_tunnel.contains")) + .append(Lang.translateDirect("tooltip.brass_tunnel.contains")) .withStyle(ChatFormatting.WHITE)); for (ItemStack item : allStacks) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.brass_tunnel.contains_entry", new TranslatableComponent(item.getItem() + .append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", new TranslatableComponent(item.getItem() .getDescriptionId(item)).getString(), item.getCount())) .withStyle(ChatFormatting.GRAY)); } tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.brass_tunnel.retrieve")) + .append(Lang.translateDirect("tooltip.brass_tunnel.retrieve")) .withStyle(ChatFormatting.DARK_GRAY)); return true; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index 448a0c53d..656c5960d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -700,26 +700,26 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { boolean downward = getItemMotion() < 0; tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.chute.header"))); + .append(Lang.translateDirect("tooltip.chute.header"))); if (pull == 0 && push == 0) tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.chute.no_fans_attached")) + .append(Lang.translateDirect("tooltip.chute.no_fans_attached")) .withStyle(ChatFormatting.GRAY)); if (pull != 0) tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.chute.fans_" + (pull > 0 ? "pull_up" : "push_down")) + .append(Lang.translateDirect("tooltip.chute.fans_" + (pull > 0 ? "pull_up" : "push_down")) .withStyle(ChatFormatting.GRAY))); if (push != 0) tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.chute.fans_" + (push > 0 ? "push_up" : "pull_down")) + .append(Lang.translateDirect("tooltip.chute.fans_" + (push > 0 ? "push_up" : "pull_down")) .withStyle(ChatFormatting.GRAY))); tooltip.add(componentSpacing.plainCopy() .append("-> ") - .append(Lang.translate("tooltip.chute.items_move_" + (downward ? "down" : "up")) + .append(Lang.translateDirect("tooltip.chute.items_move_" + (downward ? "down" : "up")) .withStyle(ChatFormatting.YELLOW))); if (!item.isEmpty()) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translate("tooltip.chute.contains", new TranslatableComponent(item.getItem() + .append(Lang.translateDirect("tooltip.chute.contains", new TranslatableComponent(item.getItem() .getDescriptionId(item)).getString(), item.getCount())) .withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTargetHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTargetHandler.java index c1cf6d8b9..fd08082ee 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTargetHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTargetHandler.java @@ -59,7 +59,7 @@ public class EjectorTargetHandler { String key = "weighted_ejector.target_set"; ChatFormatting colour = ChatFormatting.GOLD; - player.displayClientMessage(Lang.translate(key) + player.displayClientMessage(Lang.translateDirect(key) .withStyle(colour), true); currentSelection = pos; launcher = null; @@ -101,7 +101,7 @@ public class EjectorTargetHandler { Direction validTargetDirection = getValidTargetDirection(pos); if (validTargetDirection == null) { - player.displayClientMessage(Lang.translate(key) + player.displayClientMessage(Lang.translateDirect(key) .withStyle(colour), true); currentItem = null; currentSelection = null; @@ -112,7 +112,7 @@ public class EjectorTargetHandler { colour = ChatFormatting.GREEN; player.displayClientMessage( - Lang.translate(key, currentSelection.getX(), currentSelection.getY(), currentSelection.getZ()) + Lang.translateDirect(key, currentSelection.getX(), currentSelection.getY(), currentSelection.getZ()) .withStyle(colour), true); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java index 44d8de10e..d9946340c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java @@ -102,7 +102,7 @@ public class EjectorTileEntity extends KineticTileEntity { super.addBehaviours(behaviours); behaviours.add(depotBehaviour = new DepotBehaviour(this)); - maxStackSize = new ScrollValueBehaviour(Lang.translate("weighted_ejector.stack_size"), this, new EjectorSlot()) + maxStackSize = new ScrollValueBehaviour(Lang.translateDirect("weighted_ejector.stack_size"), this, new EjectorSlot()) .between(0, 64) .withFormatter(i -> i == 0 ? "*" : String.valueOf(i)) .onlyActiveWhen(() -> state == State.CHARGED) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java index dfc2da4dc..0e08276e8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java @@ -29,7 +29,7 @@ public abstract class BrassDiodeTileEntity extends SmartTileEntity { @Override public void addBehaviours(List behaviours) { - maxState = new ScrollValueBehaviour(Lang.translate("generic.delay"), this, new BrassDiodeScrollSlot()) + maxState = new ScrollValueBehaviour(Lang.translateDirect("generic.delay"), this, new BrassDiodeScrollSlot()) .between(2, 60 * 20 * 30); maxState.withStepFunction(this::step); maxState.withFormatter(this::format); @@ -98,10 +98,10 @@ public abstract class BrassDiodeTileEntity extends SmartTileEntity { private Component getUnit(int value) { if (value < 20) - return Lang.translate("generic.unit.ticks"); + return Lang.translateDirect("generic.unit.ticks"); if (value < 20 * 60) - return Lang.translate("generic.unit.seconds"); - return Lang.translate("generic.unit.minutes"); + return Lang.translateDirect("generic.unit.seconds"); + return Lang.translateDirect("generic.unit.minutes"); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java index 4960debd1..85ae770fc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java @@ -151,7 +151,7 @@ public class DisplayLinkBlock extends WrenchableDirectionalBlock implements ITE< if (!(player instanceof LocalPlayer)) return; if (te.targetOffset.equals(BlockPos.ZERO)) { - player.displayClientMessage(Lang.translate("display_link.invalid"), true); + player.displayClientMessage(Lang.translateDirect("display_link.invalid"), true); return; } ScreenOpener.open(new DisplayLinkScreen(te)); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlockItem.java index a6d0db5e0..7520f0de3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlockItem.java @@ -60,7 +60,7 @@ public class DisplayLinkBlockItem extends BlockItem { if (player.isSteppingCarefully() && stack.hasTag()) { if (level.isClientSide) return InteractionResult.SUCCESS; - player.displayClientMessage(Lang.translate("display_link.clear"), true); + player.displayClientMessage(Lang.translateDirect("display_link.clear"), true); stack.setTag(null); return InteractionResult.SUCCESS; } @@ -70,7 +70,7 @@ public class DisplayLinkBlockItem extends BlockItem { return InteractionResult.SUCCESS; CompoundTag stackTag = stack.getOrCreateTag(); stackTag.put("SelectedPos", NbtUtils.writeBlockPos(pos)); - player.displayClientMessage(Lang.translate("display_link.set"), true); + player.displayClientMessage(Lang.translateDirect("display_link.set"), true); stack.setTag(stackTag); return InteractionResult.SUCCESS; } @@ -83,7 +83,7 @@ public class DisplayLinkBlockItem extends BlockItem { .isReplaceable() ? 0 : 1); if (!selectedPos.closerThan(placedPos, AllConfigs.SERVER.logistics.displayLinkRange.get())) { - player.displayClientMessage(Lang.translate("display_link.too_far") + player.displayClientMessage(Lang.translateDirect("display_link.too_far") .withStyle(ChatFormatting.RED), true); return InteractionResult.FAIL; } @@ -98,7 +98,7 @@ public class DisplayLinkBlockItem extends BlockItem { ItemStack itemInHand = player.getItemInHand(pContext.getHand()); if (!itemInHand.isEmpty()) itemInHand.setTag(null); - player.displayClientMessage(Lang.translate("display_link.success") + player.displayClientMessage(Lang.translateDirect("display_link.success") .withStyle(ChatFormatting.GREEN), true); return useOn; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java index 1f26ab22f..711d41468 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java @@ -140,7 +140,7 @@ public class DisplayLinkScreen extends AbstractSimiScreen { if (rows > 1) { targetLineSelector = new ScrollInput(x + 61, y + 105, 135, 16).withRange(0, rows) - .titled(Lang.translate("display_link.display_on")) + .titled(Lang.translateDirect("display_link.display_on")) .inverted() .calling(i -> targetLineLabel.text = target.getLineOptionText(i)) .setState(startIndex); @@ -157,11 +157,11 @@ public class DisplayLinkScreen extends AbstractSimiScreen { }); sourceWidget.getToolTip().addAll(List.of( - Lang.translate("display_link.reading_from"), + Lang.translateDirect("display_link.reading_from"), sourceState.getBlock().getName() .withStyle(s -> s.withColor(sources.isEmpty() ? 0xF68989 : 0xF2C16D)), - Lang.translate("display_link.attached_side"), - Lang.translate("display_link.view_compatible") + Lang.translateDirect("display_link.attached_side"), + Lang.translateDirect("display_link.view_compatible") .withStyle(ChatFormatting.GRAY) )); @@ -174,11 +174,11 @@ public class DisplayLinkScreen extends AbstractSimiScreen { }); targetWidget.getToolTip().addAll(List.of( - Lang.translate("display_link.writing_to"), + Lang.translateDirect("display_link.writing_to"), targetState.getBlock().getName() .withStyle(s -> s.withColor(target == null ? 0xF68989 : 0xF2C16D)), - Lang.translate("display_link.targeted_location"), - Lang.translate("display_link.view_compatible") + Lang.translateDirect("display_link.targeted_location"), + Lang.translateDirect("display_link.view_compatible") .withStyle(ChatFormatting.GRAY) )); @@ -197,7 +197,7 @@ public class DisplayLinkScreen extends AbstractSimiScreen { .toList(); sourceTypeSelector = new SelectionScrollInput(x + 61, y + 26, 135, 16).forOptions(options) .writingTo(sourceTypeLabel) - .titled(Lang.translate("display_link.information_type")) + .titled(Lang.translateDirect("display_link.information_type")) .calling(this::initGathererSourceSubOptions) .setState(startIndex); sourceTypeSelector.onChanged(); @@ -216,8 +216,8 @@ public class DisplayLinkScreen extends AbstractSimiScreen { if (targetLineSelector != null) targetLineSelector - .titled(source instanceof SingleLineDisplaySource ? Lang.translate("display_link.display_on") - : Lang.translate("display_link.display_on_multiline")); + .titled(source instanceof SingleLineDisplaySource ? Lang.translateDirect("display_link.display_on") + : Lang.translateDirect("display_link.display_on_multiline")); configWidgets.forEach(s -> { s.forEach(this::removeWidget); @@ -252,13 +252,13 @@ public class DisplayLinkScreen extends AbstractSimiScreen { int y = guiTop; background.render(ms, x, y, this); - MutableComponent header = Lang.translate("display_link.title"); + MutableComponent header = Lang.translateDirect("display_link.title"); font.draw(ms, header, x + background.width / 2 - font.width(header) / 2, y + 4, 0x442000); if (sources.isEmpty()) - font.drawShadow(ms, Lang.translate("display_link.no_source"), x + 65, y + 30, 0xD3D3D3); + font.drawShadow(ms, Lang.translateDirect("display_link.no_source"), x + 65, y + 30, 0xD3D3D3); if (target == null) - font.drawShadow(ms, Lang.translate("display_link.no_target"), x + 65, y + 109, 0xD3D3D3); + font.drawShadow(ms, Lang.translateDirect("display_link.no_target"), x + 65, y + 109, 0xD3D3D3); ms.pushPose(); ms.translate(0, guiTop + 46, 0); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java index ceda8a56b..bb7c37196 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java @@ -23,16 +23,16 @@ import net.minecraft.world.level.block.entity.LecternBlockEntity; public class BoilerDisplaySource extends DisplaySource { public static final List notEnoughSpaceSingle = - List.of(Lang.translate("display_source.boiler.not_enough_space") - .append(Lang.translate("display_source.boiler.for_boiler_status"))); + List.of(Lang.translateDirect("display_source.boiler.not_enough_space") + .append(Lang.translateDirect("display_source.boiler.for_boiler_status"))); public static final List notEnoughSpaceDouble = - List.of(Lang.translate("display_source.boiler.not_enough_space"), - Lang.translate("display_source.boiler.for_boiler_status")); + List.of(Lang.translateDirect("display_source.boiler.not_enough_space"), + Lang.translateDirect("display_source.boiler.for_boiler_status")); public static final List> notEnoughSpaceFlap = - List.of(List.of(Lang.translate("display_source.boiler.not_enough_space")), - List.of(Lang.translate("display_source.boiler.for_boiler_status"))); + List.of(List.of(Lang.translateDirect("display_source.boiler.not_enough_space")), + List.of(Lang.translateDirect("display_source.boiler.for_boiler_status"))); @Override public List provideText(DisplayLinkContext context, DisplayTargetStats stats) { @@ -133,7 +133,7 @@ public class BoilerDisplaySource extends DisplaySource { heat = new TextComponent(Strings.repeat(' ', lw - labelWidthOf("heat"))).append(heat); } - return Stream.of(List.of(Lang.translate(label, boiler.getHeatLevelTextComponent())), + return Stream.of(List.of(Lang.translateDirect(label, boiler.getHeatLevelTextComponent())), List.of(size, boiler.getSizeComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)), List.of(water, boiler.getWaterComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)), List.of(heat, boiler.getHeatComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK))); @@ -151,7 +151,7 @@ public class BoilerDisplaySource extends DisplaySource { private MutableComponent labelOf(String label) { if (label.isBlank()) return TextComponent.EMPTY.copy(); - return Lang.translate("boiler." + label); + return Lang.translateDirect("boiler." + label); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DeathCounterDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DeathCounterDisplaySource.java index 371b7e796..d248da249 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DeathCounterDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DeathCounterDisplaySource.java @@ -26,7 +26,7 @@ public class DeathCounterDisplaySource extends StatTrackingDisplaySource { @Override protected Component getObjectiveDisplayName() { - return Lang.translate("display_source.scoreboard.objective.deaths"); + return Lang.translateDirect("display_source.scoreboard.objective.deaths"); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FillLevelDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FillLevelDisplaySource.java index 3f5a3b9f7..dc6807ded 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FillLevelDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FillLevelDisplaySource.java @@ -38,7 +38,7 @@ public class FillLevelDisplaySource extends PercentOrProgressBarDisplaySource { return; builder.addSelectionScrollInput(0, 120, (si, l) -> si.forOptions(Lang.translatedOptions("display_source.fill_level", "percent", "progress_bar")) - .titled(Lang.translate("display_source.fill_level.display")), + .titled(Lang.translateDirect("display_source.fill_level.display")), "Mode"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java index cf35535d6..e4e346aa0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.logistics.block.display.source; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity; @@ -26,7 +25,7 @@ public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySourc CompoundTag conf = context.sourceConfig(); if (conf.contains("Inactive")) return new TextComponent("0"); - + double interval = 20 * Math.pow(60, conf.getInt("Interval")); double rate = conf.getFloat("Rate") * interval; @@ -45,7 +44,8 @@ public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySourc } } - return new TextComponent(IHaveGoggleInformation.format(rate)); + return Lang.number(rate) + .component(); } public void itemReceived(DisplayLinkTileEntity te, int amount) { @@ -101,14 +101,15 @@ public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySourc @Override @OnlyIn(Dist.CLIENT) - public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { + public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, + boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); if (isFirstLine) return; builder.addSelectionScrollInput(0, 80, (si, l) -> { si.forOptions(Lang.translatedOptions("display_source.item_throughput.interval", "second", "minute", "hour")) - .titled(Lang.translate("display_source.item_throughput.interval")); + .titled(Lang.translateDirect("display_source.item_throughput.interval")); }, "Interval"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java index 85e0b27cb..e04d40a4a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.logistics.block.display.source; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; @@ -8,7 +7,6 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -16,13 +14,16 @@ public class KineticSpeedDisplaySource extends NumericSingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { - if (!(context.getSourceTE() instanceof SpeedGaugeTileEntity gaugeTile)) + if (!(context.getSourceTE()instanceof SpeedGaugeTileEntity gaugeTile)) return ZERO; - boolean absoluteValue = context.sourceConfig().getInt("Directional") == 0; + boolean absoluteValue = context.sourceConfig() + .getInt("Directional") == 0; float speed = absoluteValue ? Math.abs(gaugeTile.getSpeed()) : gaugeTile.getSpeed(); - - return new TextComponent(IHaveGoggleInformation.format(speed)); + return Lang.number(speed) + .space() + .translate("generic.unit.rpm") + .component(); } @Override @@ -32,13 +33,15 @@ public class KineticSpeedDisplaySource extends NumericSingleLineDisplaySource { @Override @OnlyIn(Dist.CLIENT) - public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { + public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, + boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); if (isFirstLine) return; builder.addSelectionScrollInput(0, 95, (selectionScrollInput, label) -> { - selectionScrollInput.forOptions(Lang.translatedOptions("display_source.kinetic_speed", "absolute", "directional")); + selectionScrollInput + .forOptions(Lang.translatedOptions("display_source.kinetic_speed", "absolute", "directional")); }, "Directional"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticStressDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticStressDisplaySource.java index 117c474e4..1a1a06185 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticStressDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticStressDisplaySource.java @@ -1,14 +1,13 @@ package com.simibubi.create.content.logistics.block.display.source; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.relays.gauge.StressGaugeTileEntity; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -19,10 +18,11 @@ public class KineticStressDisplaySource extends PercentOrProgressBarDisplaySourc int mode = getMode(context); if (mode == 1) return super.formatNumeric(context, currentLevel); - TextComponent textComponent = new TextComponent(IHaveGoggleInformation.format(currentLevel)); + LangBuilder builder = Lang.number(currentLevel); if (context.getTargetTE() instanceof FlapDisplayTileEntity) - textComponent.append(" "); - return textComponent.append(Lang.translate("generic.unit.stress")); + builder.space(); + return builder.translate("generic.unit.stress") + .component(); } private int getMode(DisplayLinkContext context) { @@ -32,7 +32,7 @@ public class KineticStressDisplaySource extends PercentOrProgressBarDisplaySourc @Override protected Float getProgress(DisplayLinkContext context) { - if (!(context.getSourceTE() instanceof StressGaugeTileEntity gaugeTile)) + if (!(context.getSourceTE()instanceof StressGaugeTileEntity gaugeTile)) return null; float capacity = gaugeTile.getNetworkCapacity(); @@ -71,7 +71,7 @@ public class KineticStressDisplaySource extends PercentOrProgressBarDisplaySourc (si, l) -> si .forOptions(Lang.translatedOptions("display_source.kinetic_stress", "progress_bar", "percent", "current", "max", "remaining")) - .titled(Lang.translate("display_source.kinetic_stress.display")), + .titled(Lang.translateDirect("display_source.kinetic_stress.display")), "Mode"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java index 172c19d52..03e0195a8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java @@ -53,7 +53,7 @@ public class RedstonePowerDisplaySource extends PercentOrProgressBarDisplaySourc return; builder.addSelectionScrollInput(0, 120, (si, l) -> si.forOptions(Lang.translatedOptions("display_source.redstone_power", "number", "progress_bar")) - .titled(Lang.translate("display_source.redstone_power.display")), + .titled(Lang.translateDirect("display_source.redstone_power.display")), "Mode"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java index ea483710f..cafedbba6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java @@ -47,7 +47,7 @@ public class ScoreboardDisplaySource extends ValueListDisplaySource { private ImmutableList> notFound(String objective) { return ImmutableList - .of(IntAttached.with(404, Lang.translate("display_source.scoreboard.objective_not_found", objective))); + .of(IntAttached.with(404, Lang.translateDirect("display_source.scoreboard.objective_not_found", objective))); } @Override @@ -60,9 +60,9 @@ public class ScoreboardDisplaySource extends ValueListDisplaySource { if (isFirstLine) builder.addTextInput(0, 137, (e, t) -> { e.setValue(""); - t.withTooltip(ImmutableList.of(Lang.translate("display_source.scoreboard.objective") + t.withTooltip(ImmutableList.of(Lang.translateDirect("display_source.scoreboard.objective") .withStyle(s -> s.withColor(0x5391E1)), - Lang.translate("gui.schedule.lmb_edit") + Lang.translateDirect("gui.schedule.lmb_edit") .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC))); }, "Objective"); else diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java index a36878d83..c557050a0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java @@ -34,9 +34,9 @@ public abstract class SingleLineDisplaySource extends DisplaySource { protected void addLabelingTextBox(ModularGuiLineBuilder builder) { builder.addTextInput(0, 137, (e, t) -> { e.setValue(""); - t.withTooltip(ImmutableList.of(Lang.translate("display_source.label") + t.withTooltip(ImmutableList.of(Lang.translateDirect("display_source.label") .withStyle(s -> s.withColor(0x5391E1)), - Lang.translate("gui.schedule.lmb_edit") + Lang.translateDirect("gui.schedule.lmb_edit") .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC))); }, "Label"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java index 6f48fc89e..60c5f2c13 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java @@ -57,7 +57,7 @@ public class StationSummaryDisplaySource extends DisplaySource { } else if (prediction.ticks < 200) { lines.add(WHITESPACE); - lines.add(Lang.translate("display_source.station_summary.now")); + lines.add(Lang.translateDirect("display_source.station_summary.now")); } else { int min = prediction.ticks / 1200; @@ -68,8 +68,8 @@ public class StationSummaryDisplaySource extends DisplaySource { sec = 0; } lines.add(min > 0 ? new TextComponent(String.valueOf(min)) : WHITESPACE); - lines.add(min > 0 ? Lang.translate("display_source.station_summary.minutes") - : Lang.translate("display_source.station_summary.seconds", sec)); + lines.add(min > 0 ? Lang.translateDirect("display_source.station_summary.minutes") + : Lang.translateDirect("display_source.station_summary.seconds", sec)); } lines.add(prediction.train.name.copy()); @@ -187,16 +187,16 @@ public class StationSummaryDisplaySource extends DisplaySource { if (isFirstLine) { builder.addTextInput(0, 137, (e, t) -> { e.setValue(""); - t.withTooltip(ImmutableList.of(Lang.translate("display_source.station_summary.filter") + t.withTooltip(ImmutableList.of(Lang.translateDirect("display_source.station_summary.filter") .withStyle(s -> s.withColor(0x5391E1)), - Lang.translate("gui.schedule.lmb_edit") + Lang.translateDirect("gui.schedule.lmb_edit") .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC))); }, "Filter"); return; } builder.addScrollInput(0, 32, (si, l) -> { - si.titled(Lang.translate("display_source.station_summary.train_name_column")) + si.titled(Lang.translateDirect("display_source.station_summary.train_name_column")) .withRange(0, 73) .withShiftStep(12); si.setState(50); @@ -204,7 +204,7 @@ public class StationSummaryDisplaySource extends DisplaySource { }, "NameColumn"); builder.addScrollInput(36, 22, (si, l) -> { - si.titled(Lang.translate("display_source.station_summary.platform_column")) + si.titled(Lang.translateDirect("display_source.station_summary.platform_column")) .withRange(0, 16) .withShiftStep(4); si.setState(3); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java index 1e69402f7..d71ef7bbf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java @@ -35,7 +35,7 @@ public class TimeOfDayDisplaySource extends SingleLineDisplaySource { int dayTime = (int) (sLevel.getDayTime() % 24000); int hours = (dayTime / 1000 + 6) % 24; int minutes = (dayTime % 1000) * 60 / 1000; - MutableComponent suffix = Lang.translate("generic.daytime." + (hours > 11 ? "pm" : "am")); + MutableComponent suffix = Lang.translateDirect("generic.daytime." + (hours > 11 ? "pm" : "am")); minutes = minutes / 5 * 5; if (c12) { @@ -79,7 +79,7 @@ public class TimeOfDayDisplaySource extends SingleLineDisplaySource { builder.addSelectionScrollInput(0, 60, (si, l) -> { si.forOptions(Lang.translatedOptions("display_source.time", "12_hour", "24_hour")) - .titled(Lang.translate("display_source.time.format")); + .titled(Lang.translateDirect("display_source.time.format")); }, "Cycle"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java index 07134b12a..193067fad 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java @@ -138,11 +138,11 @@ public abstract class ValueListDisplaySource extends DisplaySource { private Couple shorten(int number) { if (number >= 1000000) return Couple.create(new TextComponent(String.valueOf(number / 1000000)), - Lang.translate("display_source.value_list.million") + Lang.translateDirect("display_source.value_list.million") .append(WHITESPACE)); if (number >= 1000) return Couple.create(new TextComponent(String.valueOf(number / 1000)), - Lang.translate("display_source.value_list.thousand") + Lang.translateDirect("display_source.value_list.thousand") .append(WHITESPACE)); return Couple.create(new TextComponent(String.valueOf(number)), WHITESPACE); } @@ -163,7 +163,7 @@ public abstract class ValueListDisplaySource extends DisplaySource { protected void addFullNumberConfig(ModularGuiLineBuilder builder) { builder.addSelectionScrollInput(0, 75, (si, l) -> si.forOptions(Lang.translatedOptions("display_source.value_list", "shortened", "full_number")) - .titled(Lang.translate("display_source.value_list.display")), + .titled(Lang.translateDirect("display_source.value_list.display")), "Format"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/target/DisplayTarget.java b/src/main/java/com/simibubi/create/content/logistics/block/display/target/DisplayTarget.java index ecf318fb3..6c1848421 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/target/DisplayTarget.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/target/DisplayTarget.java @@ -32,7 +32,7 @@ public abstract class DisplayTarget extends DisplayBehaviour { } public Component getLineOptionText(int line) { - return Lang.translate("display_target.line", line + 1); + return Lang.translateDirect("display_target.line", line + 1); } public static void reserve(int line, BlockEntity target, DisplayLinkContext context) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/target/LecternDisplayTarget.java b/src/main/java/com/simibubi/create/content/logistics/block/display/target/LecternDisplayTarget.java index 1b2af9226..9e97bdbee 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/target/LecternDisplayTarget.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/target/LecternDisplayTarget.java @@ -65,7 +65,7 @@ public class LecternDisplayTarget extends DisplayTarget { } public Component getLineOptionText(int line) { - return Lang.translate("display_target.page", line + 1); + return Lang.translateDirect("display_target.page", line + 1); } private ItemStack signBook(ItemStack book) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/target/SingleLineDisplayTarget.java b/src/main/java/com/simibubi/create/content/logistics/block/display/target/SingleLineDisplayTarget.java index 953ceb5df..0858e5a92 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/target/SingleLineDisplayTarget.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/target/SingleLineDisplayTarget.java @@ -24,7 +24,7 @@ public abstract class SingleLineDisplayTarget extends DisplayTarget { @Override public Component getLineOptionText(int line) { - return Lang.translate("display_target.single_line"); + return Lang.translateDirect("display_target.single_line"); } protected abstract int getWidth(DisplayLinkContext context); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java index add92ccd5..b6fe03b8c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java @@ -6,7 +6,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Str import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; -import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -178,16 +177,14 @@ public class ArmInteractionPoint { } public enum Mode { - DEPOSIT("mechanical_arm.deposit_to", ChatFormatting.GOLD, 0xFFCB74), - TAKE("mechanical_arm.extract_from", ChatFormatting.AQUA, 0x4F8A8B); + DEPOSIT("mechanical_arm.deposit_to", 0xDDC166), + TAKE("mechanical_arm.extract_from", 0x7FCDE0); private final String translationKey; - private final ChatFormatting chatColor; private final int color; - Mode(String translationKey, ChatFormatting chatColor, int color) { + Mode(String translationKey, int color) { this.translationKey = translationKey; - this.chatColor = chatColor; this.color = color; } @@ -195,10 +192,6 @@ public class ArmInteractionPoint { return translationKey; } - public ChatFormatting getChatColor() { - return chatColor; - } - public int getColor() { return color; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java index e5ef2ddc0..91e6724d5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java @@ -16,7 +16,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -64,11 +63,12 @@ public class ArmInteractionPointHandler { selected.cycleMode(); if (player != null) { - String key = selected.getMode().getTranslationKey(); - ChatFormatting colour = selected.getMode().getChatColor(); - MutableComponent translatedBlock = state.getBlock().getName(); - player.displayClientMessage((Lang.translate(key, translatedBlock.withStyle(ChatFormatting.WHITE, colour)).withStyle(colour)), - true); + Mode mode = selected.getMode(); + Lang.builder() + .translate(mode.getTranslationKey(), Lang.blockName(state) + .style(ChatFormatting.WHITE)) + .color(mode.getColor()) + .sendStatus(player); } event.setCanceled(true); @@ -95,7 +95,8 @@ public class ArmInteractionPointHandler { int removed = 0; for (Iterator iterator = currentSelection.iterator(); iterator.hasNext();) { ArmInteractionPoint point = iterator.next(); - if (point.getPos().closerThan(pos, ArmTileEntity.getRange())) + if (point.getPos() + .closerThan(pos, ArmTileEntity.getRange())) continue; iterator.remove(); removed++; @@ -103,8 +104,10 @@ public class ArmInteractionPointHandler { LocalPlayer player = Minecraft.getInstance().player; if (removed > 0) { - player.displayClientMessage(Lang.createTranslationTextComponent("mechanical_arm.points_outside_range", removed) - .withStyle(ChatFormatting.RED), true); + Lang.builder() + .translate("mechanical_arm.points_outside_range", removed) + .style(ChatFormatting.RED) + .sendStatus(player); } else { int inputs = 0; int outputs = 0; @@ -115,8 +118,10 @@ public class ArmInteractionPointHandler { inputs++; } if (inputs + outputs > 0) - player.displayClientMessage(Lang.createTranslationTextComponent("mechanical_arm.summary", inputs, outputs) - .withStyle(ChatFormatting.WHITE), true); + Lang.builder() + .translate("mechanical_arm.summary", inputs, outputs) + .style(ChatFormatting.WHITE) + .sendStatus(player); } AllPackets.channel.sendToServer(new ArmPlacementPacket(currentSelection, pos)); @@ -194,11 +199,12 @@ public class ArmInteractionPointHandler { if (shape.isEmpty()) continue; - int color = point.getMode().getColor(); + int color = point.getMode() + .getColor(); CreateClient.OUTLINER.showAABB(point, shape.bounds() - .move(pos)) - .colored(color) - .lineWidth(1 / 16f); + .move(pos)) + .colored(color) + .lineWidth(1 / 16f); } } @@ -215,7 +221,8 @@ public class ArmInteractionPointHandler { private static ArmInteractionPoint getSelected(BlockPos pos) { for (ArmInteractionPoint point : currentSelection) - if (point.getPos().equals(pos)) + if (point.getPos() + .equals(pos)) return point; return null; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index f1f818632..8ac68137a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -102,7 +102,7 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE super.addBehaviours(behaviours); selectionMode = new ScrollOptionBehaviour(SelectionMode.class, - Lang.translate("logistics.when_multiple_outputs_available"), this, new SelectionModeValueBox()); + Lang.translateDirect("logistics.when_multiple_outputs_available"), this, new SelectionModeValueBox()); selectionMode.requiresWrench(); behaviours.add(selectionMode); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverTileEntity.java index dddd73f5b..d7bd93f53 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverTileEntity.java @@ -79,7 +79,7 @@ public class AnalogLeverTileEntity extends SmartTileEntity implements IHaveGoggl @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("tooltip.analogStrength", this.state))); + tooltip.add(componentSpacing.plainCopy().append(Lang.translateDirect("tooltip.analogStrength", this.state))); return true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java index 413b76886..f6b26b01c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java @@ -25,7 +25,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { private IconButton confirmButton; private IconButton flipSignals; - private final Component invertSignal = Lang.translate("gui.stockpile_switch.invert_signal"); + private final Component invertSignal = Lang.translateDirect("gui.stockpile_switch.invert_signal"); private final ItemStack renderedItem = new ItemStack(AllBlocks.STOCKPILE_SWITCH.get()); private AllGuiTextures background; @@ -36,7 +36,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { private LerpedFloat cursorLane; public StockpileSwitchScreen(StockpileSwitchTileEntity te) { - super(Lang.translate("gui.stockpile_switch.title")); + super(Lang.translateDirect("gui.stockpile_switch.title")); background = AllGuiTextures.STOCKSWITCH; this.te = te; lastModification = -1; @@ -60,7 +60,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { .titled(TextComponent.EMPTY.plainCopy()) .calling(state -> { lastModification = 0; - offBelow.titled(Lang.translate("gui.stockpile_switch.move_to_upper_at", state)); + offBelow.titled(Lang.translateDirect("gui.stockpile_switch.move_to_upper_at", state)); if (onAbove.getState() <= state) { onAbove.setState(state + 1); onAbove.onChanged(); @@ -72,7 +72,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { .titled(TextComponent.EMPTY.plainCopy()) .calling(state -> { lastModification = 0; - onAbove.titled(Lang.translate("gui.stockpile_switch.move_to_lower_at", state)); + onAbove.titled(Lang.translateDirect("gui.stockpile_switch.move_to_lower_at", state)); if (offBelow.getState() >= state) { offBelow.setState(state - 1); offBelow.onChanged(); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java index 75f68491d..1e20ad42f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java @@ -59,7 +59,7 @@ public class LinkedControllerClientHandler { if (MODE == Mode.IDLE) { MODE = Mode.ACTIVE; lecternPos = null; - } else { + } else { MODE = Mode.IDLE; onReset(); } @@ -84,7 +84,8 @@ public class LinkedControllerClientHandler { } protected static void onReset() { - ControlsUtil.getControls().forEach(kb -> kb.setDown(ControlsUtil.isActuallyPressed(kb))); + ControlsUtil.getControls() + .forEach(kb -> kb.setDown(ControlsUtil.isActuallyPressed(kb))); packetCooldown = 0; selectedLocation = BlockPos.ZERO; @@ -126,7 +127,8 @@ public class LinkedControllerClientHandler { } } - if (inLectern() && AllBlocks.LECTERN_CONTROLLER.get().getTileEntityOptional(mc.level, lecternPos) + if (inLectern() && AllBlocks.LECTERN_CONTROLLER.get() + .getTileEntityOptional(mc.level, lecternPos) .map(te -> !te.isUsedBy(mc.player)) .orElse(true)) { deactivateInLectern(); @@ -139,7 +141,8 @@ public class LinkedControllerClientHandler { return; } - if (InputConstants.isKeyDown(mc.getWindow().getWindow(), GLFW.GLFW_KEY_ESCAPE)) { + if (InputConstants.isKeyDown(mc.getWindow() + .getWindow(), GLFW.GLFW_KEY_ESCAPE)) { MODE = Mode.IDLE; onReset(); return; @@ -206,13 +209,15 @@ public class LinkedControllerClientHandler { controls.forEach(kb -> kb.setDown(false)); } - public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width1, int height1) { + public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width1, + int height1) { if (MODE != Mode.BIND) return; Minecraft mc = Minecraft.getInstance(); poseStack.pushPose(); - Screen tooltipScreen = new Screen(TextComponent.EMPTY) {}; + Screen tooltipScreen = new Screen(TextComponent.EMPTY) { + }; tooltipScreen.init(mc, width1, height1); Object[] keys = new Object[6]; @@ -224,11 +229,10 @@ public class LinkedControllerClientHandler { } List list = new ArrayList<>(); - list.add(Lang.createTranslationTextComponent("linked_controller.bind_mode") + list.add(Lang.translateDirect("linked_controller.bind_mode") .withStyle(ChatFormatting.GOLD)); - list.addAll( - TooltipHelper.cutTextComponent(Lang.createTranslationTextComponent("linked_controller.press_keybind", keys), - ChatFormatting.GRAY, ChatFormatting.GRAY)); + list.addAll(TooltipHelper.cutTextComponent(Lang.translateDirect("linked_controller.press_keybind", keys), + ChatFormatting.GRAY, ChatFormatting.GRAY)); int width = 0; int height = list.size() * mc.font.lineHeight; diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java index 0bb791ace..5436e38af 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java @@ -57,9 +57,7 @@ public class LinkedControllerScreen extends AbstractSimiContainerScreenat(x + background.width - 4, y + background.height - 56, -200) + GuiGameElement.of(menu.contentHolder).at(x + background.width - 4, y + background.height - 56, -200) .scale(5) .render(ms); } @@ -111,12 +109,10 @@ public class LinkedControllerScreen extends AbstractSimiContainerScreen addToTooltip(List list, int slot) { if (slot < 0 || slot >= 12) return list; - list.add(Lang - .createTranslationTextComponent("linked_controller.frequency_slot_" + ((slot % 2) + 1), - ControlsUtil.getControls() - .get(slot / 2) - .getTranslatedKeyMessage() - .getString()) + list.add(Lang.translateDirect("linked_controller.frequency_slot_" + ((slot % 2) + 1), ControlsUtil.getControls() + .get(slot / 2) + .getTranslatedKeyMessage() + .getString()) .withStyle(ChatFormatting.GOLD)); return list; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java index 38c99970b..fb5488ccb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java @@ -30,19 +30,19 @@ public class AttributeFilterScreen extends AbstractFilterScreen 3) { @@ -112,10 +112,10 @@ public class FilterItem extends Item implements MenuProvider { WhitelistMode whitelistMode = WhitelistMode.values()[filter.getOrCreateTag() .getInt("WhitelistMode")]; list.add((whitelistMode == WhitelistMode.WHITELIST_CONJ - ? Lang.translate("gui.attribute_filter.allow_list_conjunctive") + ? Lang.translateDirect("gui.attribute_filter.allow_list_conjunctive") : whitelistMode == WhitelistMode.WHITELIST_DISJ - ? Lang.translate("gui.attribute_filter.allow_list_disjunctive") - : Lang.translate("gui.attribute_filter.deny_list")).withStyle(ChatFormatting.GOLD)); + ? Lang.translateDirect("gui.attribute_filter.allow_list_disjunctive") + : Lang.translateDirect("gui.attribute_filter.deny_list")).withStyle(ChatFormatting.GOLD)); int count = 0; ListTag attributes = filter.getOrCreateTag() diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java index ad0567943..9bae5a3e6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java @@ -19,15 +19,15 @@ public class FilterScreen extends AbstractFilterScreen { private static final String PREFIX = "gui.filter."; - private Component allowN = Lang.translate(PREFIX + "allow_list"); - private Component allowDESC = Lang.translate(PREFIX + "allow_list.description"); - private Component denyN = Lang.translate(PREFIX + "deny_list"); - private Component denyDESC = Lang.translate(PREFIX + "deny_list.description"); + private Component allowN = Lang.translateDirect(PREFIX + "allow_list"); + private Component allowDESC = Lang.translateDirect(PREFIX + "allow_list.description"); + private Component denyN = Lang.translateDirect(PREFIX + "deny_list"); + private Component denyDESC = Lang.translateDirect(PREFIX + "deny_list.description"); - private Component respectDataN = Lang.translate(PREFIX + "respect_data"); - private Component respectDataDESC = Lang.translate(PREFIX + "respect_data.description"); - private Component ignoreDataN = Lang.translate(PREFIX + "ignore_data"); - private Component ignoreDataDESC = Lang.translate(PREFIX + "ignore_data.description"); + private Component respectDataN = Lang.translateDirect(PREFIX + "respect_data"); + private Component respectDataDESC = Lang.translateDirect(PREFIX + "respect_data.description"); + private Component ignoreDataN = Lang.translateDirect(PREFIX + "ignore_data"); + private Component ignoreDataDESC = Lang.translateDirect(PREFIX + "ignore_data.description"); private IconButton whitelist, blacklist; private IconButton respectNBT, ignoreNBT; diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java index 52e12f2cf..a5353d6a7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java @@ -122,7 +122,7 @@ public interface ItemAttribute { @OnlyIn(value = Dist.CLIENT) default TranslatableComponent format(boolean inverted) { - return Lang.translate("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), + return Lang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), getTranslationParameters()); } @@ -300,7 +300,7 @@ public interface ItemAttribute { @Override @OnlyIn(value = Dist.CLIENT) public TranslatableComponent format(boolean inverted) { - return Lang.translate("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), + return Lang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), group.getDisplayName()); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java index f988f7d0c..86fca30e0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java @@ -48,7 +48,7 @@ public class ShulkerFillLevelAttribute implements ItemAttribute { public Object[] getTranslationParameters() { String parameter = ""; if (levels != null) - parameter = Lang.translate("item_attributes." + getTranslationKey() + "." + levels.key).getString(); + parameter = Lang.translateDirect("item_attributes." + getTranslationKey() + "." + levels.key).getString(); return new Object[]{parameter}; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraption.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraption.java index 5c4c9ea92..acda55898 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraption.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraption.java @@ -99,9 +99,9 @@ public class CarriageContraption extends Contraption { if (bogeys == 0) return false; if (bogeys > 2) - throw new AssemblyException(Lang.translate("train_assembly.too_many_bogeys", bogeys)); + throw new AssemblyException(Lang.translateDirect("train_assembly.too_many_bogeys", bogeys)); if (sidewaysControls) - throw new AssemblyException(Lang.translate("train_assembly.sideways_controls")); + throw new AssemblyException(Lang.translateDirect("train_assembly.sideways_controls")); for (BlockPos blazePos : assembledBlazeBurners) for (Direction direction : Iterate.directionsInAxis(assemblyDirection.getAxis())) diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java index 2cf684ebc..cab1ce204 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java @@ -528,7 +528,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { @Override public Component getDisplayName() { if (carriage == null) - return Lang.translate("train"); + return Lang.translateDirect("train"); return carriage.train.name; } @@ -587,7 +587,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { boolean spaceDown = heldControls.contains(4); GlobalStation currentStation = carriage.train.getCurrentStation(); if (currentStation != null && spaceDown) { - sendPrompt(player, Lang.translate("train.arrived_at", + sendPrompt(player, Lang.translateDirect("train.arrived_at", new TextComponent(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); return true; } @@ -599,7 +599,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { if (currentStation != null && targetSpeed != 0) { stationMessage = false; - sendPrompt(player, Lang.translate("train.departing_from", + sendPrompt(player, Lang.translateDirect("train.departing_from", new TextComponent(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); } @@ -680,7 +680,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { private void displayApproachStationMessage(Player player, GlobalStation station) { sendPrompt(player, - Lang.translate("contraption.controls.approach_station", new KeybindComponent("key.jump"), station.name), + Lang.translateDirect("contraption.controls.approach_station", new KeybindComponent("key.jump"), station.name), false); stationMessage = true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java index c59b4ac82..d81ba1c9e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java @@ -140,7 +140,7 @@ public class Train { this.carriageSpacing = carriageSpacing; this.icon = TrainIconType.getDefault(); this.stress = new double[carriageSpacing.size()]; - this.name = Lang.translate("train.unnamed"); + this.name = Lang.translateDirect("train.unnamed"); this.status = new TrainStatus(this); this.doubleEnded = doubleEnded; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java index ee0e273e6..614ec29a3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java @@ -96,7 +96,7 @@ public class TrainRelocationPacket extends SimplePacketBase { } if (TrainRelocator.relocate(train, sender.level, pos, hoveredBezier, direction, lookAngle, false)) { - sender.displayClientMessage(Lang.translate("train.relocate.success") + sender.displayClientMessage(Lang.translateDirect("train.relocate.success") .withStyle(ChatFormatting.GREEN), true); train.carriages.forEach(c -> c.forEachPresentEntity(e -> { e.nonDamageTicks = 10; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocator.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocator.java index cc66af449..4133be722 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocator.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocator.java @@ -83,7 +83,7 @@ public class TrainRelocator { if (!player.position() .closerThan(relocatingOrigin, 24) || player.isSteppingCarefully()) { relocatingTrain = null; - player.displayClientMessage(Lang.translate("train.relocate.abort") + player.displayClientMessage(Lang.translateDirect("train.relocate.abort") .withStyle(ChatFormatting.RED), true); return; } @@ -294,14 +294,14 @@ public class TrainRelocator { if (entity instanceof AbstractContraptionEntity ce && Math.abs(ce.getPosition(0) .subtract(ce.getPosition(1)) .lengthSqr()) > 1 / 1024d) { - player.displayClientMessage(Lang.translate("train.cannot_relocate_moving") + player.displayClientMessage(Lang.translateDirect("train.cannot_relocate_moving") .withStyle(ChatFormatting.RED), true); relocatingTrain = null; return; } if (!AllItems.WRENCH.isIn(player.getMainHandItem())) { - player.displayClientMessage(Lang.translate("train.relocate.abort") + player.displayClientMessage(Lang.translateDirect("train.relocate.abort") .withStyle(ChatFormatting.RED), true); relocatingTrain = null; return; @@ -309,19 +309,19 @@ public class TrainRelocator { if (!player.position() .closerThan(relocatingOrigin, 24)) { - player.displayClientMessage(Lang.translate("train.relocate.too_far") + player.displayClientMessage(Lang.translateDirect("train.relocate.too_far") .withStyle(ChatFormatting.RED), true); return; } Boolean success = relocateClient(relocating, true); if (success == null) - player.displayClientMessage(Lang.translate("train.relocate", relocating.name), true); + player.displayClientMessage(Lang.translateDirect("train.relocate", relocating.name), true); else if (success.booleanValue()) - player.displayClientMessage(Lang.translate("train.relocate.valid") + player.displayClientMessage(Lang.translateDirect("train.relocate.valid") .withStyle(ChatFormatting.GREEN), true); else - player.displayClientMessage(Lang.translate("train.relocate.invalid") + player.displayClientMessage(Lang.translateDirect("train.relocate.invalid") .withStyle(ChatFormatting.RED), true); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java index 20a215fde..ac30cd36b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java @@ -122,7 +122,7 @@ public class TrainStatus { if (owner == null) return; if (owner instanceof Player player) { - player.displayClientMessage(Lang.translate("train.status", train.name) + player.displayClientMessage(Lang.translateDirect("train.status", train.name) .withStyle(ChatFormatting.GOLD), false); queued.forEach(c -> player.displayClientMessage(c, false)); } @@ -131,7 +131,7 @@ public class TrainStatus { public void displayInformation(String key, boolean itsAGoodThing, Object... args) { queued.add(new TextComponent(" - ").withStyle(ChatFormatting.GRAY) - .append(Lang.translate("train.status." + key, args) + .append(Lang.translateDirect("train.status." + key, args) .withStyle(st -> st.withColor(itsAGoodThing ? 0xD5ECC2 : 0xFFD3B4)))); if (queued.size() > 3) queued.remove(0); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java index 889567362..591a5ab6e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java @@ -75,19 +75,16 @@ public class FlapDisplayRenderer extends KineticTileEntityRenderer { List line = lines.get(j) .getSections(); int color = flapTe.getLineColor(j); - int lineLight = flapTe.isLineGlowing(j) ? 0xf000f0 : light; ms.pushPose(); float w = 0; - for (FlapDisplaySection section : line) { + for (FlapDisplaySection section : line) w += section.getSize() + (section.hasGap ? 8 : 1); - } - ms.translate(flapTe.xSize * 16 - w / 2 + 1, 4.5f, 0); Pose transform = ms.last(); - FlapDisplayRenderOutput renderOutput = new FlapDisplayRenderOutput(buffer, color, transform.pose(), - lineLight, j, !te.isSpeedRequirementFulfilled(), te.getLevel()); + FlapDisplayRenderOutput renderOutput = new FlapDisplayRenderOutput(buffer, color, transform.pose(), light, + j, !te.isSpeedRequirementFulfilled(), te.getLevel(), flapTe.isLineGlowing(j)); for (int i = 0; i < line.size(); i++) { FlapDisplaySection section = line.get(i); @@ -126,16 +123,16 @@ public class FlapDisplayRenderer extends KineticTileEntityRenderer { private Level level; public FlapDisplayRenderOutput(MultiBufferSource buffer, int color, Matrix4f pose, int light, int lineIndex, - boolean paused, Level level) { + boolean paused, Level level, boolean glowing) { this.bufferSource = buffer; this.lineIndex = lineIndex; this.level = level; - this.a = .75f; + this.a = glowing ? .975f : .75f; this.r = (color >> 16 & 255) / 255f; this.g = (color >> 8 & 255) / 255f; this.b = (color & 255) / 255f; this.pose = pose; - this.light = light; + this.light = glowing ? 0xf000f0 : light; this.paused = paused; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplaySection.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplaySection.java index 802395800..4481a80ca 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplaySection.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplaySection.java @@ -170,7 +170,7 @@ public class FlapDisplaySection { } public static String[] getFlapCycle(String key) { - return LOADED_FLAP_CYCLES.computeIfAbsent(key, k -> Lang.translate("flap_display.cycles." + key) + return LOADED_FLAP_CYCLES.computeIfAbsent(key, k -> Lang.translateDirect("flap_display.cycles." + key) .getString() .split(";")); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/CurvedTrackSelectionPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/CurvedTrackSelectionPacket.java index 8e6e0aacc..f248780f2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/CurvedTrackSelectionPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/CurvedTrackSelectionPacket.java @@ -62,7 +62,7 @@ public class CurvedTrackSelectionPacket extends TileEntityConfigurationPacket result.setValue(overlap)); if (result.getValue().feedback != null) { - player.displayClientMessage(Lang.translate(result.getValue().feedback) + player.displayClientMessage(Lang.translateDirect(result.getValue().feedback) .withStyle(ChatFormatting.RED), true); AllSoundEvents.DENY.play(player.level, null, pos, .5f, 1); return; @@ -90,7 +90,7 @@ public class CurvedTrackSelectionPacket extends TileEntityConfigurationPacket result.setValue(overlap)); if (result.getValue().feedback != null) { - player.displayClientMessage(Lang.translate(result.getValue().feedback) + player.displayClientMessage(Lang.translateDirect(result.getValue().feedback) .withStyle(ChatFormatting.RED), true); AllSoundEvents.DENY.play(level, null, pos, .5f, 1); return InteractionResult.FAIL; @@ -98,14 +98,14 @@ public class TrackTargetingBlockItem extends BlockItem { stackTag.put("SelectedPos", NbtUtils.writeBlockPos(pos)); stackTag.putBoolean("SelectedDirection", front); stackTag.remove("Bezier"); - player.displayClientMessage(Lang.translate("track_target.set"), true); + player.displayClientMessage(Lang.translateDirect("track_target.set"), true); stack.setTag(stackTag); AllSoundEvents.CONTROLLER_CLICK.play(level, null, pos, 1, 1); return InteractionResult.SUCCESS; } if (!stack.hasTag()) { - player.displayClientMessage(Lang.translate("track_target.missing") + player.displayClientMessage(Lang.translateDirect("track_target.missing") .withStyle(ChatFormatting.RED), true); return InteractionResult.FAIL; } @@ -121,7 +121,7 @@ public class TrackTargetingBlockItem extends BlockItem { boolean bezier = tag.contains("Bezier"); if (!selectedPos.closerThan(placedPos, bezier ? 64 + 16 : 16)) { - player.displayClientMessage(Lang.translate("track_target.too_far") + player.displayClientMessage(Lang.translateDirect("track_target.too_far") .withStyle(ChatFormatting.RED), true); return InteractionResult.FAIL; } @@ -139,7 +139,7 @@ public class TrackTargetingBlockItem extends BlockItem { ItemStack itemInHand = player.getItemInHand(pContext.getHand()); if (!itemInHand.isEmpty()) itemInHand.setTag(null); - player.displayClientMessage(Lang.translate("track_target.success") + player.displayClientMessage(Lang.translateDirect("track_target.success") .withStyle(ChatFormatting.GREEN), true); if (type == EdgePointType.SIGNAL) diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SignalBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SignalBlock.java index e232d7032..15dd4fadd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SignalBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SignalBlock.java @@ -108,10 +108,10 @@ public class SignalBlock extends Block implements ITE, IWrench if (signal != null) { signal.cycleSignalType(pos); if (player != null) - player.displayClientMessage(Lang.translate("track_signal.mode_change." + signal.getTypeFor(pos) + player.displayClientMessage(Lang.translateDirect("track_signal.mode_change." + signal.getTypeFor(pos) .getSerializedName()), true); } else if (player != null) - player.displayClientMessage(Lang.translate("track_signal.cannot_change_mode"), true); + player.displayClientMessage(Lang.translateDirect("track_signal.cannot_change_mode"), true); }); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/AssemblyScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/AssemblyScreen.java index 87004ed94..c7dc73580 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/AssemblyScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/AssemblyScreen.java @@ -43,13 +43,13 @@ public class AssemblyScreen extends AbstractStationScreen { Widget widget = renderables.get(0); if (widget instanceof IconButton ib) { ib.setIcon(AllIcons.I_PRIORITY_VERY_LOW); - ib.setToolTip(Lang.translate("station.close")); + ib.setToolTip(Lang.translateDirect("station.close")); } iconTypes = TrainIconType.REGISTRY.keySet() .stream() .toList(); - iconTypeScroll = new ScrollInput(x + 4, y + 17, 184, 14).titled(Lang.translate("station.icon_type")); + iconTypeScroll = new ScrollInput(x + 4, y + 17, 184, 14).titled(Lang.translateDirect("station.icon_type")); iconTypeScroll.withRange(0, iconTypes.size()); iconTypeScroll.withStepFunction(ctx -> -iconTypeScroll.standardStep() .apply(ctx)); @@ -63,14 +63,14 @@ public class AssemblyScreen extends AbstractStationScreen { toggleAssemblyButton = new WideIconButton(x + 94, by, AllGuiTextures.I_ASSEMBLE_TRAIN); toggleAssemblyButton.active = false; - toggleAssemblyButton.setToolTip(Lang.translate("station.assemble_train")); + toggleAssemblyButton.setToolTip(Lang.translateDirect("station.assemble_train")); toggleAssemblyButton.withCallback(() -> { AllPackets.channel.sendToServer(StationEditPacket.tryAssemble(te.getBlockPos())); }); quitAssembly = new IconButton(x + 73, by, AllIcons.I_DISABLE); quitAssembly.active = true; - quitAssembly.setToolTip(Lang.translate("station.cancel")); + quitAssembly.setToolTip(Lang.translateDirect("station.cancel")); quitAssembly.withCallback(() -> { AllPackets.channel.sendToServer(StationEditPacket.configure(te.getBlockPos(), false, station.name)); minecraft.setScreen(new StationScreen(te, station)); @@ -102,7 +102,7 @@ public class AssemblyScreen extends AbstractStationScreen { displayedTrain = new WeakReference<>(null); quitAssembly.active = true; iconTypeScroll.active = iconTypeScroll.visible = false; - toggleAssemblyButton.setToolTip(Lang.translate("station.assemble_train")); + toggleAssemblyButton.setToolTip(Lang.translateDirect("station.assemble_train")); toggleAssemblyButton.setIcon(AllGuiTextures.I_ASSEMBLE_TRAIN); toggleAssemblyButton.withCallback(() -> { AllPackets.channel.sendToServer(StationEditPacket.tryAssemble(te.getBlockPos())); @@ -119,36 +119,36 @@ public class AssemblyScreen extends AbstractStationScreen { int x = guiLeft; int y = guiTop; - MutableComponent header = Lang.translate("station.assembly_title"); + MutableComponent header = Lang.translateDirect("station.assembly_title"); font.draw(ms, header, x + background.width / 2 - font.width(header) / 2, y + 4, 0x0E2233); AssemblyException lastAssemblyException = te.lastException; if (lastAssemblyException != null) { - MutableComponent text = Lang.translate("station.failed"); + MutableComponent text = Lang.translateDirect("station.failed"); font.draw(ms, text, x + 97 - font.width(text) / 2, y + 47, 0x775B5B); int offset = 0; if (te.failedCarriageIndex != -1) { - font.draw(ms, Lang.translate("station.carriage_number", te.failedCarriageIndex), x + 30, y + 67, + font.draw(ms, Lang.translateDirect("station.carriage_number", te.failedCarriageIndex), x + 30, y + 67, 0x7A7A7A); offset += 10; } font.drawWordWrap(lastAssemblyException.component, x + 30, y + 67 + offset, 134, 0x775B5B); offset += font.split(lastAssemblyException.component, 134) .size() * 9 + 5; - font.drawWordWrap(Lang.translate("station.retry"), x + 30, y + 67 + offset, 134, 0x7A7A7A); + font.drawWordWrap(Lang.translateDirect("station.retry"), x + 30, y + 67 + offset, 134, 0x7A7A7A); return; } int bogeyCount = te.bogeyCount; - MutableComponent text = Lang.translate( + MutableComponent text = Lang.translateDirect( bogeyCount == 0 ? "station.no_bogeys" : bogeyCount == 1 ? "station.one_bogey" : "station.more_bogeys", bogeyCount); font.draw(ms, text, x + 97 - font.width(text) / 2, y + 47, 0x7A7A7A); - font.drawWordWrap(Lang.translate("station.how_to"), x + 28, y + 62, 134, 0x7A7A7A); - font.drawWordWrap(Lang.translate("station.how_to_1"), x + 28, y + 94, 134, 0x7A7A7A); - font.drawWordWrap(Lang.translate("station.how_to_2"), x + 28, y + 117, 138, 0x7A7A7A); + font.drawWordWrap(Lang.translateDirect("station.how_to"), x + 28, y + 62, 134, 0x7A7A7A); + font.drawWordWrap(Lang.translateDirect("station.how_to_1"), x + 28, y + 94, 134, 0x7A7A7A); + font.drawWordWrap(Lang.translateDirect("station.how_to_2"), x + 28, y + 117, 138, 0x7A7A7A); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java index 4f6c8a6b3..89da131f3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java @@ -196,7 +196,7 @@ public class StationScreen extends AbstractStationScreen { if (te.trainHasSchedule) dropScheduleButton.setToolTip( - Lang.translate(te.trainHasAutoSchedule ? "station.remove_auto_schedule" : "station.remove_schedule")); + Lang.translateDirect(te.trainHasAutoSchedule ? "station.remove_auto_schedule" : "station.remove_schedule")); else dropScheduleButton.getToolTip() .clear(); @@ -211,16 +211,16 @@ public class StationScreen extends AbstractStationScreen { private void updateAssemblyTooltip(String key) { if (key == null) { - disassembleTrainButton.setToolTip(Lang.translate("station.disassemble_train")); - newTrainButton.setToolTip(Lang.translate("station.create_train")); + disassembleTrainButton.setToolTip(Lang.translateDirect("station.disassemble_train")); + newTrainButton.setToolTip(Lang.translateDirect("station.create_train")); return; } for (IconButton ib : new IconButton[] { disassembleTrainButton, newTrainButton }) { List toolTip = ib.getToolTip(); toolTip.clear(); - toolTip.add(Lang.translate("station." + key) + toolTip.add(Lang.translateDirect("station." + key) .withStyle(ChatFormatting.GRAY)); - toolTip.add(Lang.translate("station." + key + "_1") + toolTip.add(Lang.translateDirect("station." + key + "_1") .withStyle(ChatFormatting.GRAY)); } } @@ -238,7 +238,7 @@ public class StationScreen extends AbstractStationScreen { Train train = displayedTrain.get(); if (train == null) { - MutableComponent header = Lang.translate("station.idle"); + MutableComponent header = Lang.translateDirect("station.idle"); font.draw(ms, header, x + 97 - font.width(header) / 2, y + 47, 0x7A7A7A); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java index 335c4345e..fded7e314 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java @@ -284,7 +284,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable ItemStack handItem = player.getItemInHand(hand); if (!player.isCreative() && !AllBlocks.RAILWAY_CASING.isIn(handItem)) { - player.displayClientMessage(Lang.translate("train_assembly.requires_casing"), true); + player.displayClientMessage(Lang.translateDirect("train_assembly.requires_casing"), true); return false; } @@ -298,7 +298,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable BlockState bogeyAnchor = ProperWaterloggedBlock.withWater(level, track.getBogeyAnchor(level, pos, state), pos); level.setBlock(targetPos, bogeyAnchor, 3); - player.displayClientMessage(Lang.translate("train_assembly.bogey_created"), true); + player.displayClientMessage(Lang.translateDirect("train_assembly.bogey_created"), true); SoundType soundtype = bogeyAnchor.getBlock() .getSoundType(state, level, pos, player); level.playSound(null, pos, soundtype.getPlaceSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, @@ -448,7 +448,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable return; if (bogeyLocations[0] != 0) { - exception(new AssemblyException(Lang.translate("train_assembly.frontmost_bogey_at_station")), -1); + exception(new AssemblyException(Lang.translateDirect("train_assembly.frontmost_bogey_at_station")), -1); return; } @@ -481,7 +481,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable break; if (loc - iPrevious < 3) { - exception(new AssemblyException(Lang.translate("train_assembly.bogeys_too_close", i, i + 1)), -1); + exception(new AssemblyException(Lang.translateDirect("train_assembly.bogeys_too_close", i, i + 1)), -1); return; } @@ -557,7 +557,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable } if (points.size() == 0) { - exception(new AssemblyException(Lang.translate("train_assembly.no_bogeys")), -1); + exception(new AssemblyException(Lang.translateDirect("train_assembly.no_bogeys")), -1); return; } @@ -579,7 +579,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable atLeastOneForwardControls |= contraption.hasForwardControls(); contraption.setSoundQueueOffset(offset); if (!success) { - exception(new AssemblyException(Lang.translate("train_assembly.nothing_attached", bogeyIndex + 1)), + exception(new AssemblyException(Lang.translateDirect("train_assembly.nothing_attached", bogeyIndex + 1)), -1); return; } @@ -598,7 +598,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable if (secondBogeyPos != null) { if (bogeyIndex == bogeyCount - 1 || !secondBogeyPos .equals(bogeyPosOffset.relative(assemblyDirection, bogeyLocations[bogeyIndex + 1] + 1))) { - exception(new AssemblyException(Lang.translate("train_assembly.not_connected_in_order")), + exception(new AssemblyException(Lang.translateDirect("train_assembly.not_connected_in_order")), contraptions.size() + 1); return; } @@ -609,7 +609,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable bogeyIndex++; } else if (!typeOfFirstBogey.allowsSingleBogeyCarriage()) { - exception(new AssemblyException(Lang.translate("train_assembly.single_bogey_carriage")), + exception(new AssemblyException(Lang.translateDirect("train_assembly.single_bogey_carriage")), contraptions.size() + 1); return; } @@ -619,7 +619,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable } if (!atLeastOneForwardControls) { - exception(new AssemblyException(Lang.translate("train_assembly.no_controls")), -1); + exception(new AssemblyException(Lang.translateDirect("train_assembly.no_controls")), -1); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java index 36772798e..fe18bf36b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java @@ -99,27 +99,27 @@ public class ScheduleItem extends Item implements MenuProvider { .get(seatIndex); Couple directions = cc.conductorSeats.get(seatPos); if (directions == null) { - pPlayer.displayClientMessage(Lang.translate("schedule.non_controlling_seat"), true); + pPlayer.displayClientMessage(Lang.translateDirect("schedule.non_controlling_seat"), true); AllSoundEvents.DENY.playOnServer(pPlayer.level, pPlayer.blockPosition(), 1, 1); return InteractionResult.SUCCESS; } if (train.runtime.getSchedule() != null) { AllSoundEvents.DENY.playOnServer(pPlayer.level, pPlayer.blockPosition(), 1, 1); - pPlayer.displayClientMessage(Lang.translate("schedule.remove_with_empty_hand"), true); + pPlayer.displayClientMessage(Lang.translateDirect("schedule.remove_with_empty_hand"), true); return InteractionResult.SUCCESS; } if (schedule.entries.isEmpty()) { AllSoundEvents.DENY.playOnServer(pPlayer.level, pPlayer.blockPosition(), 1, 1); - pPlayer.displayClientMessage(Lang.translate("schedule.no_stops"), true); + pPlayer.displayClientMessage(Lang.translateDirect("schedule.no_stops"), true); return InteractionResult.SUCCESS; } train.runtime.setSchedule(schedule, false); AllAdvancements.CONDUCTOR.awardTo(pPlayer); AllSoundEvents.CONFIRM.playOnServer(pPlayer.level, pPlayer.blockPosition(), 1, 1); - pPlayer.displayClientMessage(Lang.translate("schedule.applied_to_train") + pPlayer.displayClientMessage(Lang.translateDirect("schedule.applied_to_train") .withStyle(ChatFormatting.GREEN), true); pStack.shrink(1); pPlayer.setItemInHand(pUsedHand, pStack.isEmpty() ? ItemStack.EMPTY : pStack); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemRetrieval.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemRetrieval.java index 089227b0d..4408539b8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemRetrieval.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemRetrieval.java @@ -69,7 +69,7 @@ public class ScheduleItemRetrieval { if (train.runtime.paused && !train.runtime.completed) { train.runtime.paused = false; AllSoundEvents.CONFIRM.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translate("schedule.continued"), true); + player.displayClientMessage(Lang.translateDirect("schedule.continued"), true); event.setCanceled(true); return; } @@ -77,14 +77,14 @@ public class ScheduleItemRetrieval { ItemStack itemInHand = player.getItemInHand(event.getHand()); if (!itemInHand.isEmpty()) { AllSoundEvents.DENY.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translate("schedule.remove_with_empty_hand"), true); + player.displayClientMessage(Lang.translateDirect("schedule.remove_with_empty_hand"), true); event.setCanceled(true); return; } AllSoundEvents.playItemPickup(player); player.displayClientMessage( - Lang.translate( + Lang.translateDirect( train.runtime.isAutoSchedule ? "schedule.auto_removed_from_train" : "schedule.removed_from_train"), true); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java index d947ce60f..f1e8a25d3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java @@ -127,10 +127,10 @@ public class ScheduleScreen extends AbstractSimiContainerScreen tip = cyclicButton.getToolTip(); - tip.add(Lang.translate("schedule.loop")); - tip.add(Lang.translate("schedule.loop1") + tip.add(Lang.translateDirect("schedule.loop")); + tip.add(Lang.translateDirect("schedule.loop1") .withStyle(ChatFormatting.GRAY)); - tip.add(Lang.translate("schedule.loop2") + tip.add(Lang.translateDirect("schedule.loop2") .withStyle(ChatFormatting.GRAY)); addRenderableWidget(cyclicButton); @@ -141,7 +141,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 0 && !schedule.entries.isEmpty(); - resetProgress.setToolTip(Lang.translate("schedule.reset")); + resetProgress.setToolTip(Lang.translateDirect("schedule.reset")); addRenderableWidget(resetProgress); skipProgress = new IconButton(leftPos + 63, topPos + 202, AllIcons.I_PRIORITY_LOW); @@ -151,7 +151,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 0; }); skipProgress.active = schedule.entries.size() > 1; - skipProgress.setToolTip(Lang.translate("schedule.skip")); + skipProgress.setToolTip(Lang.translateDirect("schedule.skip")); addRenderableWidget(skipProgress); stopEditing(); @@ -194,7 +194,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen { ScheduleInstruction newlyCreated = Schedule.INSTRUCTION_TYPES.get(index) @@ -219,7 +219,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen { ScheduleWaitCondition newlyCreated = Schedule.CONDITION_TYPES.get(index) @@ -633,9 +633,9 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 180 && x <= 192) { if (y > 0 && y <= 14) { - renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.remove_entry")), Optional.empty(), + renderTooltip(ms, ImmutableList.of(Lang.translateDirect("gui.schedule.remove_entry")), Optional.empty(), mx, my); if (click == 0) { entries.remove(entry); @@ -695,7 +695,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen cardHeight - 14) { - renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.duplicate")), Optional.empty(), mx, + renderTooltip(ms, ImmutableList.of(Lang.translateDirect("gui.schedule.duplicate")), Optional.empty(), mx, my); if (click == 0) { entries.add(entries.indexOf(entry), entry.clone()); @@ -707,7 +707,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 194) { if (y > 7 && y <= 20 && i > 0) { - renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.move_up")), Optional.empty(), mx, + renderTooltip(ms, ImmutableList.of(Lang.translateDirect("gui.schedule.move_up")), Optional.empty(), mx, my); if (click == 0) { entries.remove(entry); @@ -717,7 +717,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 20 && y <= 33 && i < entries.size() - 1) { - renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.move_down")), Optional.empty(), mx, + renderTooltip(ms, ImmutableList.of(Lang.translateDirect("gui.schedule.move_down")), Optional.empty(), mx, my); if (click == 0) { entries.remove(entry); @@ -767,7 +767,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen= 0) { boolean canRemove = conditions.size() > 1 || columns.size() > 1; List components = new ArrayList<>(); - components.add(Lang.translate("schedule.condition_type") + components.add(Lang.translateDirect("schedule.condition_type") .withStyle(ChatFormatting.GRAY)); ScheduleWaitCondition condition = conditions.get(row); components.addAll(condition.getTitleAs("condition")); @@ -795,7 +795,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 18 * conditions.size() && y <= 18 * conditions.size() + 10 && x >= w / 2 - 5 && x < w / 2 + 5) { - renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.add_condition")), Optional.empty(), + renderTooltip(ms, ImmutableList.of(Lang.translateDirect("gui.schedule.add_condition")), Optional.empty(), mx, my); if (click == 0) startEditing(new ScheduledDelay(), confirmed -> { @@ -811,7 +811,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 15 || y > 20) return false; - renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.alternative_condition")), Optional.empty(), + renderTooltip(ms, ImmutableList.of(Lang.translateDirect("gui.schedule.alternative_condition")), Optional.empty(), mx, my); if (click == 0) startEditing(new ScheduledDelay(), confirmed -> { @@ -827,7 +827,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 33 || y > 14) return false; - renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.add_entry")), Optional.empty(), mx, my); + renderTooltip(ms, ImmutableList.of(Lang.translateDirect("gui.schedule.add_entry")), Optional.empty(), mx, my); if (click == 0) startEditing(new DestinationInstruction(), confirmed -> { if (!confirmed) @@ -1036,9 +1036,9 @@ public class ScheduleScreen extends AbstractSimiContainerScreen translatedOptions() { return Arrays.stream(values()) - .map(op -> Lang.translate("schedule.condition.threshold." + Lang.asId(op.name()))) + .map(op -> Lang.translateDirect("schedule.condition.threshold." + Lang.asId(op.name()))) .toList(); } } @@ -108,8 +108,8 @@ public abstract class CargoThresholdCondition extends LazyTickedScheduleConditio @Override public List getSecondLineTooltip(int slot) { - return ImmutableList.of(Lang.translate("schedule.condition.threshold.place_item"), - Lang.translate("schedule.condition.threshold.place_item_2") + return ImmutableList.of(Lang.translateDirect("schedule.condition.threshold.place_item"), + Lang.translateDirect("schedule.condition.threshold.place_item_2") .withStyle(ChatFormatting.GRAY)); } @@ -118,7 +118,7 @@ public abstract class CargoThresholdCondition extends LazyTickedScheduleConditio public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addSelectionScrollInput(0, 24, (i, l) -> { i.forOptions(Ops.translatedOptions()) - .titled(Lang.translate("schedule.condition.threshold.train_holds")) + .titled(Lang.translateDirect("schedule.condition.threshold.train_holds")) .format(state -> new TextComponent(" " + Ops.values()[state].formatted)); }, "Operator"); builder.addIntegerTextInput(29, 41, (e, t) -> { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java index 8b21a8b9b..db595a20d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java @@ -96,12 +96,12 @@ public class FluidThresholdCondition extends CargoThresholdCondition { @Override public List getTitleAs(String type) { return ImmutableList.of( - Lang.translate("schedule.condition.threshold.train_holds", - Lang.translate("schedule.condition.threshold." + Lang.asId(getOperator().name()))), - Lang.translate("schedule.condition.threshold.x_units_of_item", getThreshold(), - Lang.translate("schedule.condition.threshold.buckets"), + Lang.translateDirect("schedule.condition.threshold.train_holds", + Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))), + Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(), + Lang.translateDirect("schedule.condition.threshold.buckets"), compareStack.getItem() instanceof FilterItem - ? Lang.translate("schedule.condition.threshold.matching_content") + ? Lang.translateDirect("schedule.condition.threshold.matching_content") : loadFluid().getDisplayName()) .withStyle(ChatFormatting.DARK_AQUA)); } @@ -126,7 +126,7 @@ public class FluidThresholdCondition extends CargoThresholdCondition { public void initConfigurationWidgets(ModularGuiLineBuilder builder) { super.initConfigurationWidgets(builder); builder.addSelectionScrollInput(71, 50, (i, l) -> { - i.forOptions(ImmutableList.of(Lang.translate("schedule.condition.threshold.buckets"))) + i.forOptions(ImmutableList.of(Lang.translateDirect("schedule.condition.threshold.buckets"))) .titled(null); }, "Measure"); } @@ -137,8 +137,8 @@ public class FluidThresholdCondition extends CargoThresholdCondition { if (lastDisplaySnapshot == -1) return TextComponent.EMPTY.copy(); int offset = getOperator() == Ops.LESS ? -1 : getOperator() == Ops.GREATER ? 1 : 0; - return Lang.translate("schedule.condition.threshold.status", lastDisplaySnapshot, - Math.max(0, getThreshold() + offset), Lang.translate("schedule.condition.threshold.buckets")); + return Lang.translateDirect("schedule.condition.threshold.status", lastDisplaySnapshot, + Math.max(0, getThreshold() + offset), Lang.translateDirect("schedule.condition.threshold.buckets")); } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/IdleCargoCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/IdleCargoCondition.java index 990c68dcb..d4801c0ca 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/IdleCargoCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/IdleCargoCondition.java @@ -16,7 +16,7 @@ public class IdleCargoCondition extends TimedWaitCondition { @Override public Pair getSummary() { - return Pair.of(ItemStack.EMPTY, Lang.translate("schedule.condition.idle_short", formatTime(true))); + return Pair.of(ItemStack.EMPTY, Lang.translateDirect("schedule.condition.idle_short", formatTime(true))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java index 1feaaadac..d33b488e2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java @@ -93,11 +93,11 @@ public class ItemThresholdCondition extends CargoThresholdCondition { @Override public List getTitleAs(String type) { return ImmutableList.of( - Lang.translate("schedule.condition.threshold.train_holds", - Lang.translate("schedule.condition.threshold." + Lang.asId(getOperator().name()))), - Lang.translate("schedule.condition.threshold.x_units_of_item", getThreshold(), - Lang.translate("schedule.condition.threshold." + (inStacks() ? "stacks" : "items")), - stack.getItem() instanceof FilterItem ? Lang.translate("schedule.condition.threshold.matching_content") + Lang.translateDirect("schedule.condition.threshold.train_holds", + Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))), + Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(), + Lang.translateDirect("schedule.condition.threshold." + (inStacks() ? "stacks" : "items")), + stack.getItem() instanceof FilterItem ? Lang.translateDirect("schedule.condition.threshold.matching_content") : stack.getHoverName()) .withStyle(ChatFormatting.DARK_AQUA)); } @@ -116,9 +116,9 @@ public class ItemThresholdCondition extends CargoThresholdCondition { public void initConfigurationWidgets(ModularGuiLineBuilder builder) { super.initConfigurationWidgets(builder); builder.addSelectionScrollInput(71, 50, (i, l) -> { - i.forOptions(ImmutableList.of(Lang.translate("schedule.condition.threshold.items"), - Lang.translate("schedule.condition.threshold.stacks"))) - .titled(Lang.translate("schedule.condition.threshold.item_measure")); + i.forOptions(ImmutableList.of(Lang.translateDirect("schedule.condition.threshold.items"), + Lang.translateDirect("schedule.condition.threshold.stacks"))) + .titled(Lang.translateDirect("schedule.condition.threshold.item_measure")); }, "Measure"); } @@ -128,8 +128,8 @@ public class ItemThresholdCondition extends CargoThresholdCondition { if (lastDisplaySnapshot == -1) return TextComponent.EMPTY.copy(); int offset = getOperator() == Ops.LESS ? -1 : getOperator() == Ops.GREATER ? 1 : 0; - return Lang.translate("schedule.condition.threshold.status", lastDisplaySnapshot, + return Lang.translateDirect("schedule.condition.threshold.status", lastDisplaySnapshot, Math.max(0, getThreshold() + offset), - Lang.translate("schedule.condition.threshold." + (inStacks() ? "stacks" : "items"))); + Lang.translateDirect("schedule.condition.threshold." + (inStacks() ? "stacks" : "items"))); } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java index 6a9fc36cc..bc2a90ee0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java @@ -29,7 +29,7 @@ public class PlayerPassengerCondition extends ScheduleWaitCondition { int target = getTarget(); return Pair.of(AllBlocks.SEATS.get(DyeColor.YELLOW) .asStack(), - Lang.translate("schedule.condition.player_count." + (target == 1 ? "summary" : "summary_plural"), target)); + Lang.translateDirect("schedule.condition.player_count." + (target == 1 ? "summary" : "summary_plural"), target)); } @Override @@ -48,8 +48,8 @@ public class PlayerPassengerCondition extends ScheduleWaitCondition { @Override public List getTitleAs(String type) { int target = getTarget(); - return ImmutableList.of(Lang.translate("schedule.condition.player_count.seated", - Lang.translate("schedule.condition.player_count." + (target == 1 ? "summary" : "summary_plural"), + return ImmutableList.of(Lang.translateDirect("schedule.condition.player_count.seated", + Lang.translateDirect("schedule.condition.player_count." + (target == 1 ? "summary" : "summary_plural"), new TextComponent("" + target).withStyle(ChatFormatting.DARK_AQUA)))); } @@ -57,14 +57,14 @@ public class PlayerPassengerCondition extends ScheduleWaitCondition { @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addScrollInput(0, 31, (i, l) -> { - i.titled(Lang.translate("schedule.condition.player_count.players")) + i.titled(Lang.translateDirect("schedule.condition.player_count.players")) .withShiftStep(5) .withRange(0, 21); }, "Count"); builder.addSelectionScrollInput(36, 85, (i, l) -> { i.forOptions(Lang.translatedOptions("schedule.condition.player_count", "exactly", "or_above")) - .titled(Lang.translate("schedule.condition.player_count.condition")); + .titled(Lang.translateDirect("schedule.condition.player_count.condition")); }, "Exact"); } @@ -81,7 +81,7 @@ public class PlayerPassengerCondition extends ScheduleWaitCondition { @Override public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { - return Lang.translate("schedule.condition.player_count.status", train.countPlayerPassengers(), getTarget()); + return Lang.translateDirect("schedule.condition.player_count.status", train.countPlayerPassengers(), getTarget()); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java index 029c27a63..97e809927 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java @@ -40,20 +40,20 @@ public class RedstoneLinkCondition extends ScheduleWaitCondition { @Override public Pair getSummary() { return Pair.of(AllBlocks.REDSTONE_LINK.asStack(), - lowActivation() ? Lang.translate("schedule.condition.redstone_link_off") - : Lang.translate("schedule.condition.redstone_link_on")); + lowActivation() ? Lang.translateDirect("schedule.condition.redstone_link_off") + : Lang.translateDirect("schedule.condition.redstone_link_on")); } @Override public List getSecondLineTooltip(int slot) { - return ImmutableList.of(Lang.translate(slot == 0 ? "logistics.firstFrequency" : "logistics.secondFrequency") + return ImmutableList.of(Lang.translateDirect(slot == 0 ? "logistics.firstFrequency" : "logistics.secondFrequency") .withStyle(ChatFormatting.RED)); } @Override public List getTitleAs(String type) { return ImmutableList.of( - Lang.translate("schedule.condition.redstone_link.frequency_" + (lowActivation() ? "unpowered" : "powered")), + Lang.translateDirect("schedule.condition.redstone_link.frequency_" + (lowActivation() ? "unpowered" : "powered")), new TextComponent(" #1 ").withStyle(ChatFormatting.GRAY) .append(freq.getFirst() .getStack() @@ -115,13 +115,13 @@ public class RedstoneLinkCondition extends ScheduleWaitCondition { public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addSelectionScrollInput(20, 101, (i, l) -> i.forOptions(Lang.translatedOptions("schedule.condition.redstone_link", "powered", "unpowered")) - .titled(Lang.translate("schedule.condition.redstone_link.frequency_state")), + .titled(Lang.translateDirect("schedule.condition.redstone_link.frequency_state")), "Inverted"); } @Override public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { - return Lang.translate("schedule.condition.redstone_link.status"); + return Lang.translateDirect("schedule.condition.redstone_link.status"); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ScheduledDelay.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ScheduledDelay.java index 04019bea4..2b6b9cd15 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ScheduledDelay.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ScheduledDelay.java @@ -15,7 +15,7 @@ public class ScheduledDelay extends TimedWaitCondition { @Override public Pair getSummary() { - return Pair.of(ItemStack.EMPTY, Lang.translate("schedule.condition.delay_short", formatTime(true))); + return Pair.of(ItemStack.EMPTY, Lang.translateDirect("schedule.condition.delay_short", formatTime(true))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java index c7423aa1a..7760bc585 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java @@ -17,7 +17,7 @@ import net.minecraft.world.level.Level; public class StationPoweredCondition extends ScheduleWaitCondition { @Override public Pair getSummary() { - return Pair.of(ItemStack.EMPTY, Lang.translate("schedule.condition.powered")); + return Pair.of(ItemStack.EMPTY, Lang.translateDirect("schedule.condition.powered")); } @Override @@ -44,6 +44,6 @@ public class StationPoweredCondition extends ScheduleWaitCondition { @Override public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { - return Lang.translate("schedule.condition.powered.status"); + return Lang.translateDirect("schedule.condition.powered.status"); } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationUnloadedCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationUnloadedCondition.java index a9620d2a9..8f5ccbd92 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationUnloadedCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationUnloadedCondition.java @@ -17,7 +17,7 @@ import net.minecraft.world.level.Level; public class StationUnloadedCondition extends ScheduleWaitCondition { @Override public Pair getSummary() { - return Pair.of(ItemStack.EMPTY, Lang.translate("schedule.condition.unloaded")); + return Pair.of(ItemStack.EMPTY, Lang.translateDirect("schedule.condition.unloaded")); } @Override @@ -43,6 +43,6 @@ public class StationUnloadedCondition extends ScheduleWaitCondition { @Override public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { - return Lang.translate("schedule.condition.unloaded.status"); + return Lang.translateDirect("schedule.condition.unloaded.status"); } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java index 3b3e7c5b4..1664d7f6d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java @@ -74,13 +74,13 @@ public class TimeOfDayCondition extends ScheduleWaitCondition { int hour12raw = hour % 12 == 0 ? 12 : hour % 12; String hr12 = doubleDigitHrs ? twoDigits(hour12raw) : ("" + hour12raw); String hr24 = doubleDigitHrs ? twoDigits(hour) : ("" + hour); - return Lang.translate("schedule.condition.time_of_day.digital_format", hr12, hr24, twoDigits(minute), - hour > 11 ? Lang.translate("generic.daytime.pm") : Lang.translate("generic.daytime.am")); + return Lang.translateDirect("schedule.condition.time_of_day.digital_format", hr12, hr24, twoDigits(minute), + hour > 11 ? Lang.translateDirect("generic.daytime.pm") : Lang.translateDirect("generic.daytime.am")); } @Override public List getTitleAs(String type) { - return ImmutableList.of(Lang.translate("schedule.condition.time_of_day.scheduled"), + return ImmutableList.of(Lang.translateDirect("schedule.condition.time_of_day.scheduled"), getDigitalDisplay(intData("Hour"), intData("Minute"), false).withStyle(ChatFormatting.DARK_AQUA) .append(new TextComponent(" -> ").withStyle(ChatFormatting.DARK_GRAY)) .append(Lang @@ -133,11 +133,11 @@ public class TimeOfDayCondition extends ScheduleWaitCondition { builder.addSelectionScrollInput(52, 62, (i, l) -> { i.forOptions(Lang.translatedOptions("schedule.condition.time_of_day.rotation", "every_24", "every_12", "every_6", "every_4", "every_3", "every_2", "every_1", "every_0_45", "every_0_30", "every_0_15")) - .titled(Lang.translate("schedule.condition.time_of_day.rotation")); + .titled(Lang.translateDirect("schedule.condition.time_of_day.rotation")); }, "Rotation"); hourInput.getValue() - .titled(Lang.translate("generic.daytime.hour")) + .titled(Lang.translateDirect("generic.daytime.hour")) .calling(t -> { data.putInt("Hour", t); timeLabel.getValue().text = getDigitalDisplay(t, minuteInput.getValue() @@ -147,7 +147,7 @@ public class TimeOfDayCondition extends ScheduleWaitCondition { .withShiftStep(6); minuteInput.getValue() - .titled(Lang.translate("generic.daytime.minute")) + .titled(Lang.translateDirect("generic.daytime.minute")) .calling(t -> { data.putInt("Minute", t); timeLabel.getValue().text = getDigitalDisplay(hourInput.getValue() @@ -185,7 +185,7 @@ public class TimeOfDayCondition extends ScheduleWaitCondition { int departingHour = (departureTime / 1000 + 6) % 24; int departingMinute = (departureTime % 1000) * 60 / 1000; - return Lang.translate("schedule.condition.time_of_day.status") + return Lang.translateDirect("schedule.condition.time_of_day.status") .append(getDigitalDisplay(departingHour, departingMinute, false)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java index 5107ddbb4..8ea96afbc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java @@ -61,14 +61,14 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { protected Component formatTime(boolean compact) { if (compact) return new TextComponent(getValue() + getUnit().suffix); - return new TextComponent(getValue() + " ").append(Lang.translate(getUnit().key)); + return new TextComponent(getValue() + " ").append(Lang.translateDirect(getUnit().key)); } @Override public List getTitleAs(String type) { return ImmutableList.of( new TranslatableComponent(getId().getNamespace() + ".schedule." + type + "." + getId().getPath()), - Lang.translate("schedule.condition.for_x_time", formatTime(false)) + Lang.translateDirect("schedule.condition.for_x_time", formatTime(false)) .withStyle(ChatFormatting.DARK_AQUA)); } @@ -79,7 +79,7 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { @Override public List getSecondLineTooltip(int slot) { - return ImmutableList.of(Lang.translate("generic.duration")); + return ImmutableList.of(Lang.translateDirect("generic.duration")); } public int getValue() { @@ -94,7 +94,7 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addScrollInput(0, 31, (i, l) -> { - i.titled(Lang.translate("generic.duration")) + i.titled(Lang.translateDirect("generic.duration")) .withShiftStep(15) .withRange(0, 121); i.lockedTooltipX = -15; @@ -103,7 +103,7 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { builder.addSelectionScrollInput(36, 85, (i, l) -> { i.forOptions(TimeUnit.translatedOptions()) - .titled(Lang.translate("generic.timeUnit")); + .titled(Lang.translateDirect("generic.timeUnit")); }, "TimeUnit"); } @@ -116,8 +116,8 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { (int) (showInMinutes ? Math.floor(ticksUntilDeparture / (20 * 60f)) : Math.ceil(ticksUntilDeparture / 100f) * 5); String key = "generic." + (showInMinutes ? num == 1 ? "daytime.minute" : "unit.minutes" : num == 1 ? "daytime.second" : "unit.seconds"); - return Lang.translate("schedule.condition." + getId().getPath() + ".status", - new TextComponent(num + " ").append(Lang.translate(key))); + return Lang.translateDirect("schedule.condition." + getId().getPath() + ".status", + new TextComponent(num + " ").append(Lang.translateDirect(key))); } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java index 624ee0ce0..75fa8801a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java @@ -51,7 +51,7 @@ public class ChangeThrottleInstruction extends ScheduleInstruction { @Override public List getTitleAs(String type) { return ImmutableList.of(Lang - .translate("schedule." + type + "." + getId().getPath() + ".summary", + .translateDirect("schedule." + type + "." + getId().getPath() + ".summary", formatted().withStyle(ChatFormatting.WHITE)) .withStyle(ChatFormatting.GOLD)); } @@ -62,7 +62,7 @@ public class ChangeThrottleInstruction extends ScheduleInstruction { builder.addScrollInput(0, 50, (si, l) -> { si.withRange(5, 101) .withStepFunction(c -> c.shift ? 25 : 5) - .titled(Lang.translate("schedule.instruction.throttle_edit_box")); + .titled(Lang.translateDirect("schedule.instruction.throttle_edit_box")); l.withSuffix("%"); }, "Value"); } @@ -77,8 +77,8 @@ public class ChangeThrottleInstruction extends ScheduleInstruction { @Override public List getSecondLineTooltip(int slot) { - return ImmutableList.of(Lang.translate("schedule.instruction.throttle_edit_box"), - Lang.translate("schedule.instruction.throttle_edit_box_1") + return ImmutableList.of(Lang.translateDirect("schedule.instruction.throttle_edit_box"), + Lang.translateDirect("schedule.instruction.throttle_edit_box_1") .withStyle(ChatFormatting.GRAY)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java index 6f9cea21e..57c1c2f42 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java @@ -46,10 +46,10 @@ public class ChangeTitleInstruction extends TextScheduleInstruction { @Override public List getSecondLineTooltip(int slot) { - return ImmutableList.of(Lang.translate("schedule.instruction.name_edit_box"), - Lang.translate("schedule.instruction.name_edit_box_1") + return ImmutableList.of(Lang.translateDirect("schedule.instruction.name_edit_box"), + Lang.translateDirect("schedule.instruction.name_edit_box_1") .withStyle(ChatFormatting.GRAY), - Lang.translate("schedule.instruction.name_edit_box_2") + Lang.translateDirect("schedule.instruction.name_edit_box_2") .withStyle(ChatFormatting.DARK_GRAY)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java index 1b1059d68..400852fbd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java @@ -54,12 +54,12 @@ public class DestinationInstruction extends TextScheduleInstruction { @Override public List getSecondLineTooltip(int slot) { - return ImmutableList.of(Lang.translate("schedule.instruction.filter_edit_box"), - Lang.translate("schedule.instruction.filter_edit_box_1") + return ImmutableList.of(Lang.translateDirect("schedule.instruction.filter_edit_box"), + Lang.translateDirect("schedule.instruction.filter_edit_box_1") .withStyle(ChatFormatting.GRAY), - Lang.translate("schedule.instruction.filter_edit_box_2") + Lang.translateDirect("schedule.instruction.filter_edit_box_2") .withStyle(ChatFormatting.DARK_GRAY), - Lang.translate("schedule.instruction.filter_edit_box_3") + Lang.translateDirect("schedule.instruction.filter_edit_box_3") .withStyle(ChatFormatting.DARK_GRAY)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java index 96bda8adb..b93019869 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java @@ -21,8 +21,8 @@ public abstract class TextScheduleInstruction extends ScheduleInstruction { @Override public List getTitleAs(String type) { - return ImmutableList.of(Lang.translate("schedule." + type + "." + getId().getPath() + ".summary") - .withStyle(ChatFormatting.GOLD), Lang.translate("generic.in_quotes", new TextComponent(getLabelText()))); + return ImmutableList.of(Lang.translateDirect("schedule." + type + "." + getId().getPath() + ".summary") + .withStyle(ChatFormatting.GOLD), Lang.translateDirect("generic.in_quotes", new TextComponent(getLabelText()))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/CurvedTrackInteraction.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/CurvedTrackInteraction.java index baac09364..4194b591e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/CurvedTrackInteraction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/CurvedTrackInteraction.java @@ -118,7 +118,7 @@ public class CurvedTrackInteraction { ItemStack heldItem = player.getMainHandItem(); Item item = heldItem.getItem(); if (AllBlocks.TRACK.isIn(heldItem)) { - player.displayClientMessage(Lang.translate("track.turn_start") + player.displayClientMessage(Lang.translateDirect("track.turn_start") .withStyle(ChatFormatting.RED), true); player.swing(InteractionHand.MAIN_HAND); return true; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java index ad5e87ce1..c4b2acb68 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java @@ -287,11 +287,11 @@ public class TrackBlock extends Block Player player = level.getNearestPlayer(pos.getX(), pos.getY(), pos.getZ(), 10, Predicates.alwaysTrue()); if (player == null) return; - player.displayClientMessage(new TextComponent(" ").append(Lang.translate("portal_track.failed")) + player.displayClientMessage(new TextComponent(" ").append(Lang.translateDirect("portal_track.failed")) .withStyle(ChatFormatting.GOLD), false); MutableComponent component = - failPos != null ? Lang.translate("portal_track." + fail, failPos.getX(), failPos.getY(), failPos.getZ()) - : Lang.translate("portal_track." + fail); + failPos != null ? Lang.translateDirect("portal_track." + fail, failPos.getX(), failPos.getY(), failPos.getZ()) + : Lang.translateDirect("portal_track." + fail); player.displayClientMessage(new TextComponent(" - ").withStyle(ChatFormatting.GRAY) .append(component.withStyle(st -> st.withColor(0xFFD3B4))), false); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlockItem.java index 6d55c789f..a8b5929dc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlockItem.java @@ -62,7 +62,7 @@ public class TrackBlockItem extends BlockItem { if (state.getBlock()instanceof TrackBlock track && track.getTrackAxes(level, pos, state) .size() > 1) { if (!level.isClientSide) - player.displayClientMessage(Lang.translate("track.junction_start") + player.displayClientMessage(Lang.translateDirect("track.junction_start") .withStyle(ChatFormatting.RED), true); return InteractionResult.SUCCESS; } @@ -75,7 +75,7 @@ public class TrackBlockItem extends BlockItem { } else if (player.isSteppingCarefully()) { if (!level.isClientSide) { - player.displayClientMessage(Lang.translate("track.selection_cleared"), true); + player.displayClientMessage(Lang.translateDirect("track.selection_cleared"), true); stack.setTag(null); } else level.playSound(player, pos, SoundEvents.ITEM_FRAME_REMOVE_ITEM, SoundSource.BLOCKS, 0.75f, 1); @@ -101,7 +101,7 @@ public class TrackBlockItem extends BlockItem { PlacementInfo info = TrackPlacement.tryConnect(level, player, pos, state, stack, hasGirder, extend); if (info.message != null && !level.isClientSide) - player.displayClientMessage(Lang.translate(info.message), true); + player.displayClientMessage(Lang.translateDirect(info.message), true); if (!info.valid) { AllSoundEvents.DENY.playFrom(player, 1, 1); return InteractionResult.FAIL; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java index e8f75197b..e35f67ebc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java @@ -604,10 +604,10 @@ public class TrackPlacement { BlueprintOverlayRenderer.displayTrackRequirements(info, player.getOffhandItem()); if (info.valid) - player.displayClientMessage(Lang.translate("track.valid_connection") + player.displayClientMessage(Lang.translateDirect("track.valid_connection") .withStyle(ChatFormatting.GREEN), true); else if (info.message != null) - player.displayClientMessage(Lang.translate(info.message) + player.displayClientMessage(Lang.translateDirect(info.message) .withStyle(info.message.equals("track.second_point") ? ChatFormatting.WHITE : ChatFormatting.RED), true); diff --git a/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java index a57bf66dc..5ed770590 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java @@ -86,8 +86,8 @@ public class ClientSchematicLoader { if (size > maxSize * 1000) { LocalPlayer player = Minecraft.getInstance().player; if (player != null) { - player.sendMessage(Lang.translate("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB)."), player.getUUID()); - player.sendMessage(Lang.translate("schematics.maxAllowedSize").append(" " + maxSize + " KB"), player.getUUID()); + player.sendMessage(Lang.translateDirect("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB)."), player.getUUID()); + player.sendMessage(Lang.translateDirect("schematics.maxAllowedSize").append(" " + maxSize + " KB"), player.getUUID()); } return false; } diff --git a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java index 4c300b8ad..3662a3515 100644 --- a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java +++ b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java @@ -81,8 +81,7 @@ public class MaterialChecklist { if (blocksNotLoaded) { textComponent = new TextComponent("\n" + ChatFormatting.RED); - textComponent = - textComponent.append(Lang.createTranslationTextComponent("materialChecklist.blocksNotLoaded")); + textComponent = textComponent.append(Lang.translateDirect("materialChecklist.blocksNotLoaded")); pages.add(StringTag.valueOf(Component.Serializer.toJson(textComponent))); } @@ -136,7 +135,7 @@ public class MaterialChecklist { tag.put("pages", pages); tag.putString("author", "Schematicannon"); tag.putString("title", ChatFormatting.BLUE + "Material Checklist"); - textComponent = Lang.createTranslationTextComponent("materialChecklist") + textComponent = Lang.translateDirect("materialChecklist") .setStyle(Style.EMPTY.withColor(ChatFormatting.BLUE) .withItalic(Boolean.FALSE)); book.getOrCreateTagElement("display") @@ -161,8 +160,7 @@ public class MaterialChecklist { tc.append(" \u2714"); tc.withStyle(unfinished ? ChatFormatting.BLUE : ChatFormatting.DARK_GREEN); return tc.append(new TextComponent("\n" + " x" + amount).withStyle(ChatFormatting.BLACK)) - .append( - new TextComponent(" | " + stacks + "\u25A4 +" + remainder + "\n").withStyle(ChatFormatting.GRAY)); + .append(new TextComponent(" | " + stacks + "\u25A4 +" + remainder + "\n").withStyle(ChatFormatting.GRAY)); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java index 028d62118..525cc369a 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java @@ -32,12 +32,12 @@ import net.minecraft.world.item.ItemStack; public class SchematicTableScreen extends AbstractSimiContainerScreen { - private final Component uploading = Lang.translate("gui.schematicTable.uploading"); - private final Component finished = Lang.translate("gui.schematicTable.finished"); - private final Component refresh = Lang.translate("gui.schematicTable.refresh"); - private final Component folder = Lang.translate("gui.schematicTable.open_folder"); - private final Component noSchematics = Lang.translate("gui.schematicTable.noSchematics"); - private final Component availableSchematicsTitle = Lang.translate("gui.schematicTable.availableSchematics"); + private final Component uploading = Lang.translateDirect("gui.schematicTable.uploading"); + private final Component finished = Lang.translateDirect("gui.schematicTable.finished"); + private final Component refresh = Lang.translateDirect("gui.schematicTable.refresh"); + private final Component folder = Lang.translateDirect("gui.schematicTable.open_folder"); + private final Component noSchematics = Lang.translateDirect("gui.schematicTable.noSchematics"); + private final Component availableSchematicsTitle = Lang.translateDirect("gui.schematicTable.availableSchematics"); protected AllGuiTextures background; diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java index 6988e0ab3..bcfe54721 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java @@ -113,7 +113,7 @@ public class SchematicTableTileEntity extends SmartTileEntity implements MenuPro @Override public Component getDisplayName() { - return Lang.translate("gui.schematicTable.title"); + return Lang.translateDirect("gui.schematicTable.title"); } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java index eef105023..8e8edef7b 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java @@ -39,7 +39,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen replaceLevelIndicators; protected Vector replaceLevelButtons; @@ -121,7 +121,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen(4); List icons = ImmutableList.of(AllIcons.I_DONT_REPLACE, AllIcons.I_REPLACE_SOLID, AllIcons.I_REPLACE_ANY, AllIcons.I_REPLACE_EMPTY); - List toolTips = ImmutableList.of(Lang.translate("gui.schematicannon.option.dontReplaceSolid"), - Lang.translate("gui.schematicannon.option.replaceWithSolid"), - Lang.translate("gui.schematicannon.option.replaceWithAny"), - Lang.translate("gui.schematicannon.option.replaceWithEmpty")); + List toolTips = ImmutableList.of(Lang.translateDirect("gui.schematicannon.option.dontReplaceSolid"), + Lang.translateDirect("gui.schematicannon.option.replaceWithSolid"), + Lang.translateDirect("gui.schematicannon.option.replaceWithAny"), + Lang.translateDirect("gui.schematicannon.option.replaceWithEmpty")); for (int i = 0; i < 4; i++) { replaceLevelIndicators.add(new Indicator(x + 33 + i * 18, y + 111, TextComponent.EMPTY)); @@ -170,7 +170,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen { sendOptionUpdate(Option.SKIP_MISSING, !menu.contentHolder.skipMissing); }); - skipMissingButton.setToolTip(Lang.translate("gui.schematicannon.option.skipMissing")); + skipMissingButton.setToolTip(Lang.translateDirect("gui.schematicannon.option.skipMissing")); skipMissingIndicator = new Indicator(x + 111, y + 111, TextComponent.EMPTY); Collections.addAll(placementSettingWidgets, skipMissingButton, skipMissingIndicator); @@ -178,7 +178,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen { sendOptionUpdate(Option.SKIP_TILES, !menu.contentHolder.replaceTileEntities); }); - skipTilesButton.setToolTip(Lang.translate("gui.schematicannon.option.skipTileEntities")); + skipTilesButton.setToolTip(Lang.translateDirect("gui.schematicannon.option.skipTileEntities")); skipTilesIndicator = new Indicator(x + 129, y + 111, TextComponent.EMPTY); Collections.addAll(placementSettingWidgets, skipTilesButton, skipTilesIndicator); @@ -268,7 +268,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen tooltip = new ArrayList<>(); if (te.hasCreativeCrate) { - tooltip.add(Lang.translate(_gunpowderLevel, "" + 100)); + tooltip.add(Lang.translateDirect(_gunpowderLevel, "" + 100)); tooltip.add(new TextComponent("(").append(new TranslatableComponent(AllBlocks.CREATIVE_CRATE.get() .getDescriptionId())) .append(")") @@ -399,12 +399,12 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen mirrorOptions = Lang.translatedOptions("schematic.mirror", "none", "leftRight", "frontBack"); - private final Component rotationLabel = Lang.translate("schematic.rotation"); - private final Component mirrorLabel = Lang.translate("schematic.mirror"); + private final Component rotationLabel = Lang.translateDirect("schematic.rotation"); + private final Component mirrorLabel = Lang.translateDirect("schematic.mirror"); private AllGuiTextures background; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java index 00d1f2b2f..ca1a4ac36 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java @@ -20,9 +20,9 @@ public class SchematicPromptScreen extends AbstractSimiScreen { private AllGuiTextures background; - private final Component convertLabel = Lang.translate("schematicAndQuill.convert"); - private final Component abortLabel = Lang.translate("action.discard"); - private final Component confirmLabel = Lang.translate("action.saveToFile"); + private final Component convertLabel = Lang.translateDirect("schematicAndQuill.convert"); + private final Component abortLabel = Lang.translateDirect("action.discard"); + private final Component confirmLabel = Lang.translateDirect("action.saveToFile"); private EditBox nameField; private IconButton confirm; @@ -30,7 +30,7 @@ public class SchematicPromptScreen extends AbstractSimiScreen { private IconButton convert; public SchematicPromptScreen() { - super(Lang.translate("schematicAndQuill.title")); + super(Lang.translateDirect("schematicAndQuill.title")); background = AllGuiTextures.SCHEMATIC_PROMPT; } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java index 5f11c3a75..70173d792 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java @@ -18,7 +18,7 @@ import net.minecraft.network.chat.TextComponent; public class ToolSelectionScreen extends Screen { - public final String scrollToCycle = Lang.translate("gui.toolmenu.cycle") + public final String scrollToCycle = Lang.translateDirect("gui.toolmenu.cycle") .getString(); public final String holdToFocus = "gui.toolmenu.focusKey"; @@ -103,7 +103,7 @@ public class ToolSelectionScreen extends Screen { int width = minecraft.getWindow() .getGuiScaledWidth(); if (!focused) - drawCenteredString(matrixStack, minecraft.font, Lang.translate(holdToFocus, keyName), width / 2, + drawCenteredString(matrixStack, minecraft.font, Lang.translateDirect(holdToFocus, keyName), width / 2, y - 10, 0xCCDDFF); else drawCenteredString(matrixStack, minecraft.font, scrollToCycle, width / 2, y - 10, 0xCCDDFF); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java index a29bafe70..9b6d9ae28 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java @@ -32,7 +32,7 @@ public enum Tools { } public TranslatableComponent getDisplayName() { - return Lang.translate("schematic.tool." + Lang.asId(name())); + return Lang.translateDirect("schematic.tool." + Lang.asId(name())); } public AllIcons getIcon() { diff --git a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java index c5d51ac75..78c73a66d 100644 --- a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java @@ -87,7 +87,7 @@ public class SchematicItem extends Item { tooltip.add(new TextComponent(ChatFormatting.GOLD + stack.getTag() .getString("File"))); } else { - tooltip.add(Lang.translate("schematic.invalid").withStyle(ChatFormatting.RED)); + tooltip.add(Lang.translateDirect("schematic.invalid").withStyle(ChatFormatting.RED)); } super.appendHoverText(stack, worldIn, tooltip, flagIn); } diff --git a/src/main/java/com/simibubi/create/foundation/ClientResourceReloadListener.java b/src/main/java/com/simibubi/create/foundation/ClientResourceReloadListener.java index e64ad933d..c0e81e199 100644 --- a/src/main/java/com/simibubi/create/foundation/ClientResourceReloadListener.java +++ b/src/main/java/com/simibubi/create/foundation/ClientResourceReloadListener.java @@ -1,8 +1,8 @@ package com.simibubi.create.foundation; import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.sound.SoundScapes; +import com.simibubi.create.foundation.utility.LangNumberFormat; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; @@ -13,7 +13,7 @@ public class ClientResourceReloadListener implements ResourceManagerReloadListen public void onResourceManagerReload(ResourceManager resourceManager) { CreateClient.invalidateRenderers(); SoundScapes.invalidateAll(); - IHaveGoggleInformation.numberFormat.update(); + LangNumberFormat.numberFormat.update(); } } diff --git a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java b/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java index 37fff26e0..171a5a6ba 100644 --- a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java @@ -16,16 +16,14 @@ public class KillTPSCommand { .executes(ctx -> { // killtps no arguments ctx.getSource() - .sendSuccess(Lang.createTranslationTextComponent("command.killTPSCommand.status.slowed_by.0", - Create.LAGGER.isLagging() ? Create.LAGGER.getTickTime() : 0), true); + .sendSuccess(Lang.translateDirect("command.killTPSCommand.status.slowed_by.0", + Create.LAGGER.isLagging() ? Create.LAGGER.getTickTime() : 0), true); if (Create.LAGGER.isLagging()) ctx.getSource() - .sendSuccess(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.0"), - true); + .sendSuccess(Lang.translateDirect("command.killTPSCommand.status.usage.0"), true); else ctx.getSource() - .sendSuccess(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.1"), - true); + .sendSuccess(Lang.translateDirect("command.killTPSCommand.status.usage.1"), true); return 1; }) @@ -36,36 +34,31 @@ public class KillTPSCommand { if (tickTime > 0) { Create.LAGGER.setLagging(true); ctx.getSource() - .sendSuccess((Lang - .createTranslationTextComponent("command.killTPSCommand.status.slowed_by.1", tickTime)), - true); + .sendSuccess((Lang.translateDirect("command.killTPSCommand.status.slowed_by.1", tickTime)), + true); ctx.getSource() - .sendSuccess(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.0"), - true); + .sendSuccess(Lang.translateDirect("command.killTPSCommand.status.usage.0"), true); } else { ctx.getSource() - .sendSuccess(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.1"), - true); + .sendSuccess(Lang.translateDirect("command.killTPSCommand.status.usage.1"), true); } return 1; }) - .then(Commands.argument(Lang.translate("command.killTPSCommand.argument.tickTime") + .then(Commands.argument(Lang.translateDirect("command.killTPSCommand.argument.tickTime") .getContents(), IntegerArgumentType.integer(1)) .executes(ctx -> { // killtps start tickTime int tickTime = IntegerArgumentType.getInteger(ctx, - Lang.translate("command.killTPSCommand.argument.tickTime") - .getContents()); + Lang.translateDirect("command.killTPSCommand.argument.tickTime") + .getContents()); Create.LAGGER.setTickTime(tickTime); Create.LAGGER.setLagging(true); ctx.getSource() - .sendSuccess((Lang - .createTranslationTextComponent("command.killTPSCommand.status.slowed_by.1", tickTime)), - true); + .sendSuccess((Lang.translateDirect("command.killTPSCommand.status.slowed_by.1", tickTime)), + true); ctx.getSource() - .sendSuccess(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.0"), - true); + .sendSuccess(Lang.translateDirect("command.killTPSCommand.status.usage.0"), true); return 1; }))) @@ -74,8 +67,7 @@ public class KillTPSCommand { // killtps stop Create.LAGGER.setLagging(false); ctx.getSource() - .sendSuccess(Lang.createTranslationTextComponent("command.killTPSCommand.status.slowed_by.2"), - false); + .sendSuccess(Lang.translateDirect("command.killTPSCommand.status.slowed_by.2"), false); return 1; })); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java index 6f549196d..3cf72b753 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java @@ -33,7 +33,7 @@ public class LogStrippingFakeRecipes { ItemStack axe = new ItemStack(Items.IRON_AXE); axe.hideTooltipPart(TooltipPart.MODIFIERS); - axe.setHoverName(Lang.translate("recipe.item_application.any_axe") + axe.setHoverName(Lang.translateDirect("recipe.item_application.any_axe") .withStyle(style -> style.withItalic(false))); ITagManager tags = ForgeRegistries.ITEMS.tags(); tags.getTag(ItemTags.LOGS) diff --git a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java index 2a56c17c7..386382ca6 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java @@ -137,20 +137,20 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { int bLongWidth = 200; addRenderableWidget( - new Button(center - 100, yStart + 92, bLongWidth, bHeight, Lang.translate("menu.return"), $ -> linkTo(parent))); - addRenderableWidget(new Button(center - 100, yStart + 24 + -16, bLongWidth, bHeight, Lang.translate("menu.configure"), + new Button(center - 100, yStart + 92, bLongWidth, bHeight, Lang.translateDirect("menu.return"), $ -> linkTo(parent))); + addRenderableWidget(new Button(center - 100, yStart + 24 + -16, bLongWidth, bHeight, Lang.translateDirect("menu.configure"), $ -> linkTo(BaseConfigScreen.forCreate(this)))); gettingStarted = new Button(center + 2, yStart + 48 + -16, bShortWidth, bHeight, - Lang.translate("menu.ponder_index"), $ -> linkTo(new PonderTagIndexScreen())); + Lang.translateDirect("menu.ponder_index"), $ -> linkTo(new PonderTagIndexScreen())); gettingStarted.active = !(parent instanceof TitleScreen); addRenderableWidget(gettingStarted); - addRenderableWidget(new Button(center - 100, yStart + 48 + -16, bShortWidth, bHeight, Lang.translate("menu.project_page"), + addRenderableWidget(new Button(center - 100, yStart + 48 + -16, bShortWidth, bHeight, Lang.translateDirect("menu.project_page"), $ -> linkTo(PROJECT_LINK))); - addRenderableWidget(new Button(center + 2, yStart + 68, bShortWidth, bHeight, Lang.translate("menu.report_bugs"), + addRenderableWidget(new Button(center + 2, yStart + 68, bShortWidth, bHeight, Lang.translateDirect("menu.report_bugs"), $ -> linkTo(ISSUE_TRACKER_LINK))); - addRenderableWidget(new Button(center - 100, yStart + 68, bShortWidth, bHeight, Lang.translate("menu.support"), + addRenderableWidget(new Button(center - 100, yStart + 68, bShortWidth, bHeight, Lang.translateDirect("menu.support"), $ -> linkTo(SUPPORT_LINK))); } @@ -164,7 +164,7 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { return; if (mouseY < gettingStarted.y || mouseY > gettingStarted.y + 20) return; - renderComponentTooltip(ms, TooltipHelper.cutTextComponent(Lang.translate("menu.only_ingame"), ChatFormatting.GRAY, + renderComponentTooltip(ms, TooltipHelper.cutTextComponent(Lang.translateDirect("menu.only_ingame"), ChatFormatting.GRAY, ChatFormatting.GRAY), mouseX, mouseY); } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java index 17b3a6b8b..337729b27 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java @@ -16,9 +16,9 @@ public class ScrollInput extends AbstractSimiWidget { protected Consumer onScroll; protected int state; - protected Component title = Lang.translate("gui.scrollInput.defaultTitle"); - protected final Component scrollToModify = Lang.translate("gui.scrollInput.scrollToModify"); - protected final Component shiftScrollsFaster = Lang.translate("gui.scrollInput.shiftScrollsFaster"); + protected Component title = Lang.translateDirect("gui.scrollInput.defaultTitle"); + protected final Component scrollToModify = Lang.translateDirect("gui.scrollInput.scrollToModify"); + protected final Component shiftScrollsFaster = Lang.translateDirect("gui.scrollInput.shiftScrollsFaster"); protected Label displayLabel; protected boolean inverted; protected Function formatter; diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java index 61ea8bce1..1a570d446 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java @@ -12,7 +12,7 @@ import net.minecraft.network.chat.TextComponent; public class SelectionScrollInput extends ScrollInput { - private final MutableComponent scrollToSelect = Lang.translate("gui.scrollInput.scrollToSelect"); + private final MutableComponent scrollToSelect = Lang.translateDirect("gui.scrollInput.scrollToSelect"); protected List options; public SelectionScrollInput(int xIn, int yIn, int widthIn, int heightIn) { diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java index 3b600a775..8a5f3f8e5 100644 --- a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java +++ b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java @@ -24,12 +24,12 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; import com.simibubi.create.content.contraptions.goggles.GogglesItem; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.block.BlockStressValues; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CKinetics; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; @@ -85,8 +85,8 @@ public class ItemDescription { List list = new ArrayList<>(); CKinetics config = AllConfigs.SERVER.kinetics; - Component rpmUnit = Lang.translate("generic.unit.rpm"); - Component suUnit = Lang.translate("generic.unit.stress"); + LangBuilder rpmUnit = Lang.translate("generic.unit.rpm"); + LangBuilder suUnit = Lang.translate("generic.unit.stress"); boolean hasGoggles = GogglesItem.isWearingGoggles(Minecraft.getInstance().player); @@ -102,24 +102,32 @@ public class ItemDescription { boolean hasStressCapacity = StressImpact.isEnabled() && BlockStressValues.hasCapacity(block); if (hasStressImpact) { + Lang.translate("tooltip.stressImpact") + .style(GRAY) + .addTo(list); + double impact = BlockStressValues.getImpact(block); StressImpact impactId = impact >= config.highStressImpact.get() ? StressImpact.HIGH : (impact >= config.mediumStressImpact.get() ? StressImpact.MEDIUM : StressImpact.LOW); - MutableComponent level = - new TextComponent(makeProgressBar(3, impactId.ordinal() + 1)).withStyle(impactId.getAbsoluteColor()); + LangBuilder builder = Lang.builder() + .add(Lang.text(makeProgressBar(3, impactId.ordinal() + 1)) + .style(impactId.getAbsoluteColor())); - if (hasGoggles) - level.append(IHaveGoggleInformation.format(impact) + "x ") - .append(rpmUnit); - else - level.append(Lang.translate("tooltip.stressImpact." + Lang.asId(impactId.name()))); - - list.add(Lang.translate("tooltip.stressImpact") - .withStyle(GRAY)); - list.add(level); + if (hasGoggles) { + builder.add(Lang.number(impact)) + .text("x ") + .add(rpmUnit) + .addTo(list); + } else + builder.translate("tooltip.stressImpact." + Lang.asId(impactId.name())) + .addTo(list); } if (hasStressCapacity) { + Lang.translate("tooltip.capacityProvided") + .style(GRAY) + .addTo(list); + double capacity = BlockStressValues.getCapacity(block); Couple generatedRPM = BlockStressValues.getProvider(block) .getGeneratedRPM(block); @@ -127,36 +135,28 @@ public class ItemDescription { StressImpact impactId = capacity >= config.highCapacity.get() ? StressImpact.HIGH : (capacity >= config.mediumCapacity.get() ? StressImpact.MEDIUM : StressImpact.LOW); StressImpact opposite = StressImpact.values()[StressImpact.values().length - 2 - impactId.ordinal()]; - MutableComponent level = - new TextComponent(makeProgressBar(3, impactId.ordinal() + 1)).withStyle(opposite.getAbsoluteColor()); - - list.add(Lang.translate("tooltip.capacityProvided") - .withStyle(GRAY)); + LangBuilder builder = Lang.builder() + .add(Lang.text(makeProgressBar(3, impactId.ordinal() + 1)) + .style(opposite.getAbsoluteColor())); if (hasGoggles) { - level.append(IHaveGoggleInformation.format(capacity) + "x ") - .append(rpmUnit); - list.add(level); + builder.add(Lang.number(capacity)) + .text("x ") + .add(rpmUnit) + .addTo(list); if (generatedRPM != null) { - MutableComponent amount = - new TextComponent(IHaveGoggleInformation.format(capacity * generatedRPM.getSecond())) - .append(suUnit); - MutableComponent component = !generatedRPM.getFirst() - .equals(generatedRPM.getSecond()) ? Lang.translate("tooltip.up_to", amount) : amount; - list.add(new TextComponent(" -> ").append(component) - .withStyle(DARK_GRAY)); + LangBuilder amount = Lang.number(capacity * generatedRPM.getSecond()) + .add(suUnit); + Lang.text(" -> ") + .add(!generatedRPM.getFirst() + .equals(generatedRPM.getSecond()) ? Lang.translate("tooltip.up_to", amount) : amount) + .style(DARK_GRAY) + .addTo(list); } - } else { - level.append(Lang.translate("tooltip.capacityProvided." + Lang.asId(impactId.name()))); - list.add(level); - } - - MutableComponent genSpeed = generatorSpeed(block, rpmUnit); - if (!genSpeed.getString() - .isEmpty()) - list.add(new TextComponent(" ").append(genSpeed) - .withStyle(DARK_GRAY)); + } else + builder.translate("tooltip.capacityProvided." + Lang.asId(impactId.name())) + .addTo(list); } return list; @@ -189,14 +189,14 @@ public class ItemDescription { boolean hasControls = !linesOnCtrl.isEmpty(); if (hasDescription || hasControls) { - String[] holdDesc = Lang.translate("tooltip.holdForDescription", "$") + String[] holdDesc = Lang.translateDirect("tooltip.holdForDescription", "$") .getString() .split("\\$"); - String[] holdCtrl = Lang.translate("tooltip.holdForControls", "$") + String[] holdCtrl = Lang.translateDirect("tooltip.holdForControls", "$") .getString() .split("\\$"); - MutableComponent keyShift = Lang.translate("tooltip.keyShift"); - MutableComponent keyCtrl = Lang.translate("tooltip.keyCtrl"); + MutableComponent keyShift = Lang.translateDirect("tooltip.keyShift"); + MutableComponent keyCtrl = Lang.translateDirect("tooltip.keyCtrl"); for (List list : Arrays.asList(lines, linesOnShift, linesOnCtrl)) { boolean shift = list == linesOnShift; boolean ctrl = list == linesOnCtrl; @@ -284,8 +284,4 @@ public class ItemDescription { return linesOnShift; } - private static MutableComponent generatorSpeed(Block block, Component unitRPM) { - return TextComponent.EMPTY.plainCopy(); - } - } diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java index 42cc7ca82..bccd61761 100644 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java @@ -40,7 +40,7 @@ public class TooltipHelper { private static final Map> tooltipReferrals = new HashMap<>(); public static MutableComponent holdShift(Palette color, boolean highlighted) { - return Lang.translate("tooltip.holdForDescription", Lang.translate("tooltip.keyShift") + return Lang.translateDirect("tooltip.holdForDescription", Lang.translateDirect("tooltip.keyShift") .withStyle(ChatFormatting.GRAY)) .withStyle(ChatFormatting.DARK_GRAY); } @@ -48,9 +48,9 @@ public class TooltipHelper { public static void addHint(List tooltip, String hintKey, Object... messageParams) { Component spacing = IHaveGoggleInformation.componentSpacing; tooltip.add(spacing.plainCopy() - .append(Lang.translate(hintKey + ".title")) + .append(Lang.translateDirect(hintKey + ".title")) .withStyle(ChatFormatting.GOLD)); - Component hint = Lang.translate(hintKey); + Component hint = Lang.translateDirect(hintKey); List cutComponent = TooltipHelper.cutTextComponent(hint, ChatFormatting.GRAY, ChatFormatting.WHITE); for (Component component : cutComponent) tooltip.add(spacing.plainCopy() diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderPalette.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderPalette.java index 395a7c4f8..cf79d4ba0 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderPalette.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderPalette.java @@ -15,8 +15,8 @@ public enum PonderPalette { MEDIUM(0xFF_0084ff), FAST(0xFF_ff55ff), - INPUT(0xFF_4f8a8b), - OUTPUT(0xFF_ffcb74), + INPUT(0xFF_7FCDE0), + OUTPUT(0xFF_DDC166), ; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java index 1e6dd6c2c..cf22e348c 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java @@ -25,7 +25,7 @@ import net.minecraftforge.client.event.RenderTooltipEvent; public class PonderTooltipHandler { public static boolean enable = true; - + static LerpedFloat holdWProgress = LerpedFloat.linear() .startWithValue(0); static ItemStack hoveredStack = ItemStack.EMPTY; @@ -44,7 +44,7 @@ public class PonderTooltipHandler { deferTick = false; Minecraft instance = Minecraft.getInstance(); Screen currentScreen = instance.screen; - + if (hoveredStack.isEmpty() || trackingStack.isEmpty()) { trackingStack = ItemStack.EMPTY; holdWProgress.startWithValue(0); @@ -75,7 +75,7 @@ public class PonderTooltipHandler { public static void addToTooltip(List toolTip, ItemStack stack) { if (!enable) return; - + updateHovered(stack); if (deferTick) @@ -86,7 +86,7 @@ public class PonderTooltipHandler { float renderPartialTicks = Minecraft.getInstance() .getFrameTime(); - Component component = subject ? Lang.createTranslationTextComponent(SUBJECT) + Component component = subject ? Lang.translateDirect(SUBJECT) .withStyle(ChatFormatting.GREEN) : makeProgressBar(Math.min(1, holdWProgress.getValue(renderPartialTicks) * 8 / 7f)); if (toolTip.size() < 2) @@ -99,7 +99,7 @@ public class PonderTooltipHandler { Minecraft instance = Minecraft.getInstance(); Screen currentScreen = instance.screen; boolean inPonderUI = currentScreen instanceof PonderUI; - + ItemStack prevStack = trackingStack; hoveredStack = ItemStack.EMPTY; subject = false; @@ -116,7 +116,7 @@ public class PonderTooltipHandler { .getRegistryName())) return; - if (prevStack.isEmpty() || !prevStack.sameItem(stack)) + if (prevStack.isEmpty() || !prevStack.sameItem(stack)) holdWProgress.startWithValue(0); hoveredStack = stack; @@ -149,7 +149,7 @@ public class PonderTooltipHandler { private static Component makeProgressBar(float progress) { MutableComponent holdW = Lang - .translate(HOLD_TO_PONDER, + .translateDirect(HOLD_TO_PONDER, ((MutableComponent) ponderKeybind().getTranslatedKeyMessage()).withStyle(ChatFormatting.GRAY)) .withStyle(ChatFormatting.DARK_GRAY); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java index 2d932ac3a..06fb92e84 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java @@ -156,7 +156,7 @@ public class DisplayScenes { scene.world.moveSection(stressElement, util.vector.of(0, -2, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent(1024 + " ").append(Lang.translate("generic.unit.stress"))); + new TextComponent(1024 + " ").append(Lang.translateDirect("generic.unit.stress"))); scene.world.flashDisplayLink(linkPos); scene.idle(40); scene.world.hideIndependentSection(stressElement, Direction.SOUTH); @@ -185,7 +185,7 @@ public class DisplayScenes { scene.world.moveSection(cuckooElement, util.vector.of(0, -1, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent("6:00 ").append(Lang.translate("generic.daytime.pm"))); + new TextComponent("6:00 ").append(Lang.translateDirect("generic.daytime.pm"))); scene.world.setDisplayBoardText(board, 2, TextComponent.EMPTY); scene.world.flashDisplayLink(linkPos); scene.idle(90); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java index a653cadda..2b1bb4682 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java @@ -96,7 +96,7 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { ms.pushPose(); ms.translate(0, 0, 500); if (backTrack.isHoveredOrFocused()) { - TranslatableComponent translate = Lang.translate(backTrackingLangKey()); + TranslatableComponent translate = Lang.translateDirect(backTrackingLangKey()); font.draw(ms, translate, 41 - font.width(translate) / 2, height - 16, Theme.i(Theme.Key.TEXT_DARKER)); if (Mth.equal(arrowAnimation.getValue(), arrowAnimation.getChaseTarget())) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java index 7fa8479c3..c7bd9bc8b 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java @@ -114,7 +114,7 @@ public class PonderTagIndexScreen extends NavigatableSimiScreen { int x = 31 + 20 + 8; int y = 31; - String title = Lang.translate(WELCOME) + String title = Lang.translateDirect(WELCOME) .getString(); int streakHeight = 35; @@ -149,7 +149,7 @@ public class PonderTagIndexScreen extends NavigatableSimiScreen { x = (width - w) / 2; y = getItemsY() - 10 + Math.max(itemArea.getHeight(), 48); - String desc = Lang.translate(DESCRIPTION) + String desc = Lang.translateDirect(DESCRIPTION) .getString(); int h = font.wordWrapHeight(desc, w); @@ -173,7 +173,7 @@ public class PonderTagIndexScreen extends NavigatableSimiScreen { int x = (int) (width * itemXmult); int y = getItemsY(); - String relatedTitle = Lang.translate(CATEGORIES) + String relatedTitle = Lang.translateDirect(CATEGORIES) .getString(); int stringWidth = font.width(relatedTitle); @@ -224,7 +224,7 @@ public class PonderTagIndexScreen extends NavigatableSimiScreen { @Override protected String getBreadcrumbTitle() { - return Lang.translate(TITLE) + return Lang.translateDirect(TITLE) .getString(); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java index 123ad260e..a1952d156 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java @@ -202,7 +202,7 @@ public class PonderTagScreen extends NavigatableSimiScreen { .withBounds(30, 30) .render(ms); - font.draw(ms, Lang.translate(PonderUI.PONDERING), x, y - 6, Theme.i(Theme.Key.TEXT_DARKER)); + font.draw(ms, Lang.translateDirect(PonderUI.PONDERING), x, y - 6, Theme.i(Theme.Key.TEXT_DARKER)); y += 8; x += 0; ms.translate(x, y, 0); @@ -246,7 +246,7 @@ public class PonderTagScreen extends NavigatableSimiScreen { int x = (int) (width * itemXmult); int y = getItemsY(); - String relatedTitle = Lang.translate(ASSOCIATED).getString(); + String relatedTitle = Lang.translateDirect(ASSOCIATED).getString(); int stringWidth = font.width(relatedTitle); ms.pushPose(); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java index 12a74f1b5..b0258e403 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java @@ -592,7 +592,7 @@ public class PonderUI extends NavigatableSimiScreen { .at(x - 39, y - 11) .render(ms); - font.draw(ms, Lang.translate(PONDERING), x, y - 6, tooltipColor); + font.draw(ms, Lang.translateDirect(PONDERING), x, y - 6, tooltipColor); y += 8; x += 0; ms.translate(x, y, 0); @@ -609,7 +609,7 @@ public class PonderUI extends NavigatableSimiScreen { ms.translate(chap.x - 4 - 4, chap.y, 0); UIRenderHelper.streak(ms, 180, 4, 10, 26, (int) (150 * fade)); - drawRightAlignedString(font, ms, Lang.translate(IN_CHAPTER) + drawRightAlignedString(font, ms, Lang.translateDirect(IN_CHAPTER) .getString(), 0, 0, tooltipColor); drawRightAlignedString(font, ms, chapter.getTitle(), 0, 12, Theme.i(Theme.Key.TEXT)); @@ -634,7 +634,7 @@ public class PonderUI extends NavigatableSimiScreen { ms.translate(mouseX, mouseY, 100); if (hoveredTooltipItem.isEmpty()) { MutableComponent text = Lang - .translate(IDENTIFY_MODE, + .translateDirect(IDENTIFY_MODE, ((MutableComponent) minecraft.options.keyDrop.getTranslatedKeyMessage()) .withStyle(ChatFormatting.WHITE)) .withStyle(ChatFormatting.GRAY); @@ -696,10 +696,10 @@ public class PonderUI extends NavigatableSimiScreen { .equals(Create.asResource("creative_motor_mojang"))) { ms.pushPose(); ms.translate(right.x + 10, right.y - 6 + nextUp.getValue(partialTicks) * 5, 400); - int boxWidth = (Math.max(font.width(nextScene.getTitle()), font.width(Lang.translate(NEXT_UP))) + 5); + int boxWidth = (Math.max(font.width(nextScene.getTitle()), font.width(Lang.translateDirect(NEXT_UP))) + 5); renderSpeechBox(ms, 0, 0, boxWidth, 20, right.isHoveredOrFocused(), Pointing.DOWN, false); ms.translate(0, -29, 100); - drawCenteredString(ms, font, Lang.translate(NEXT_UP), 0, 0, Theme.i(Theme.Key.TEXT_DARKER)); + drawCenteredString(ms, font, Lang.translateDirect(NEXT_UP), 0, 0, Theme.i(Theme.Key.TEXT_DARKER)); drawCenteredString(ms, font, nextScene.getTitle(), 0, 10, Theme.i(Theme.Key.TEXT)); ms.popPose(); } @@ -771,17 +771,17 @@ public class PonderUI extends NavigatableSimiScreen { ms.translate(0, 0, 500); int tooltipY = height - 16; if (scan.isHoveredOrFocused()) - drawCenteredString(ms, font, Lang.translate(IDENTIFY), scan.x + 10, tooltipY, tooltipColor); + drawCenteredString(ms, font, Lang.translateDirect(IDENTIFY), scan.x + 10, tooltipY, tooltipColor); if (index != 0 && left.isHoveredOrFocused()) - drawCenteredString(ms, font, Lang.translate(PREVIOUS), left.x + 10, tooltipY, tooltipColor); + drawCenteredString(ms, font, Lang.translateDirect(PREVIOUS), left.x + 10, tooltipY, tooltipColor); if (close.isHoveredOrFocused()) - drawCenteredString(ms, font, Lang.translate(CLOSE), close.x + 10, tooltipY, tooltipColor); + drawCenteredString(ms, font, Lang.translateDirect(CLOSE), close.x + 10, tooltipY, tooltipColor); if (index != scenes.size() - 1 && right.isHoveredOrFocused()) - drawCenteredString(ms, font, Lang.translate(NEXT), right.x + 10, tooltipY, tooltipColor); + drawCenteredString(ms, font, Lang.translateDirect(NEXT), right.x + 10, tooltipY, tooltipColor); if (replay.isHoveredOrFocused()) - drawCenteredString(ms, font, Lang.translate(REPLAY), replay.x + 10, tooltipY, tooltipColor); + drawCenteredString(ms, font, Lang.translateDirect(REPLAY), replay.x + 10, tooltipY, tooltipColor); if (slowMode.isHoveredOrFocused()) - drawCenteredString(ms, font, Lang.translate(SLOW_TEXT), slowMode.x + 5, tooltipY, tooltipColor); + drawCenteredString(ms, font, Lang.translateDirect(SLOW_TEXT), slowMode.x + 5, tooltipY, tooltipColor); if (PonderIndex.editingModeActive() && userMode.isHoveredOrFocused()) drawCenteredString(ms, font, "Editor View", userMode.x + 10, tooltipY, tooltipColor); ms.popPose(); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java index a19af026b..e50ad52c2 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java @@ -198,7 +198,7 @@ public class ValueBox extends ChasingAABBOutline { public IconValueBox(Component label, INamedIconOptions iconValue, AABB bb, BlockPos pos) { super(label, bb, pos); - subLabel(Lang.translate(iconValue.getTranslationKey())); + subLabel(Lang.translateDirect(iconValue.getTranslationKey())); icon = iconValue.getIcon(); } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java index 735927663..5bfea0b48 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java @@ -99,7 +99,7 @@ public class FilteringHandler { .getBlock() .getDescriptionId(); Component formattedText = new TranslatableComponent(translationKey); - player.displayClientMessage(Lang.createTranslationTextComponent("logistics.filter." + feedback, formattedText) + player.displayClientMessage(Lang.translateDirect("logistics.filter." + feedback, formattedText) .withStyle(ChatFormatting.WHITE), true); } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java index c7aae8121..9afef6ce7 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java @@ -67,7 +67,7 @@ public class FilteringRenderer { boolean showCount = behaviour.isCountVisible(); boolean fluids = behaviour.fluidFilter; Component label = isFilterSlotted ? TextComponent.EMPTY - : Lang.translate(behaviour.recipeFilter ? "logistics.recipe_filter" + : Lang.translateDirect(behaviour.recipeFilter ? "logistics.recipe_filter" : fluids ? "logistics.fluid_filter" : "logistics.filter"); boolean hit = behaviour.slotPositioning.testHit(state, target.getLocation() .subtract(Vec3.atLowerCornerOf(pos))); @@ -80,7 +80,7 @@ public class FilteringRenderer { box.offsetLabel(behaviour.textShift) .withColors(fluids ? 0x407088 : 0x7A6A2C, fluids ? 0x70adb5 : 0xB79D64) - .scrollTooltip(showCount && !isFilterSlotted ? new TextComponent("[").append(Lang.translate("action.scroll")).append("]") : TextComponent.EMPTY) + .scrollTooltip(showCount && !isFilterSlotted ? new TextComponent("[").append(Lang.translateDirect("action.scroll")).append("]") : TextComponent.EMPTY) .passive(!hit); CreateClient.OUTLINER.showValueBox(Pair.of("filter", pos), box.transform(behaviour.slotPositioning)) diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkRenderer.java index 461618c44..b37edff8d 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkRenderer.java @@ -42,8 +42,8 @@ public class LinkRenderer { if (behaviour == null) return; - Component freq1 = Lang.translate("logistics.firstFrequency"); - Component freq2 = Lang.translate("logistics.secondFrequency"); + Component freq1 = Lang.translateDirect("logistics.firstFrequency"); + Component freq2 = Lang.translateDirect("logistics.secondFrequency"); for (boolean first : Iterate.trueAndFalse) { AABB bb = new AABB(Vec3.ZERO, Vec3.ZERO).inflate(.25f); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java index 53f9904ed..ec7545742 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java @@ -70,7 +70,7 @@ public class ScrollValueRenderer { box.subLabel(new TextComponent("(").append(behaviour.unit.apply(behaviour.scrollableValue)).append(")")); } - box.scrollTooltip(new TextComponent("[").append(Lang.translate("action.scroll")).append("]")); + box.scrollTooltip(new TextComponent("[").append(Lang.translateDirect("action.scroll")).append("]")); box.offsetLabel(behaviour.textShift.add(20, -10, 0)) .withColors(0x5A5D5A, 0xB5B7B6) .passive(!highlight); diff --git a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java index a97ac43b5..5e9ac98dc 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java +++ b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java @@ -14,13 +14,13 @@ public class FluidFormatter { if (shorten && amount >= 1000) { return Couple.create( new TextComponent(String.format("%.1f" , amount / 1000d)), - Lang.translate("generic.unit.buckets") + Lang.translateDirect("generic.unit.buckets") ); } return Couple.create( new TextComponent(String.valueOf(amount)), - Lang.translate("generic.unit.millibuckets") + Lang.translateDirect("generic.unit.millibuckets") ); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/Lang.java b/src/main/java/com/simibubi/create/foundation/utility/Lang.java index 80931eca7..b69d22bc3 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Lang.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Lang.java @@ -7,33 +7,34 @@ import java.util.Locale; import com.simibubi.create.Create; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.fluids.FluidStack; public class Lang { - public static TranslatableComponent translate(String key, Object... args) { - return createTranslationTextComponent(key, args); - } - - public static TranslatableComponent createTranslationTextComponent(String key, Object... args) { - return new TranslatableComponent(Create.ID + "." + key, args); + /** + * legacy-ish. Use Lang.translate and other builder methods where possible + * + * @param key + * @param args + * @return + */ + public static TranslatableComponent translateDirect(String key, Object... args) { + return new TranslatableComponent(Create.ID + "." + key, resolveBuilders(args)); } + @Deprecated // use Lang.translate(...).sendStatus(player) public static void sendStatus(Player player, String key, Object... args) { - player.displayClientMessage(createTranslationTextComponent(key, args), true); + player.displayClientMessage(translateDirect(key, args), true); } + @Deprecated // use Lang.translate(...).color(color).sendStatus(player) public static void sendStatus(Player player, int color, String key, Object... args) { - player.displayClientMessage(createTranslationTextComponent(key, args).withStyle(p -> p.withColor(color)), true); - } - - public static List translatedOptions(String prefix, String... keys) { - List result = new ArrayList<>(keys.length); - for (String key : keys) - result.add(translate((prefix != null ? prefix + "." : "") + key)); - - return result; + player.displayClientMessage(translateDirect(key, args).withStyle(p -> p.withColor(color)), true); } public static String asId(String name) { @@ -45,4 +46,63 @@ public class Lang { return asId.endsWith("s") ? asId.substring(0, asId.length() - 1) : asId; } + public static List translatedOptions(String prefix, String... keys) { + List result = new ArrayList<>(keys.length); + for (String key : keys) + result.add(translate((prefix != null ? prefix + "." : "") + key).component()); + return result; + } + + public static Component empty() { + return TextComponent.EMPTY; + } + + // + + public static LangBuilder builder() { + return new LangBuilder(Create.ID); + } + + public static LangBuilder builder(String namespace) { + return new LangBuilder(namespace); + } + + // + + public static LangBuilder blockName(BlockState state) { + return builder().add(state.getBlock() + .getName()); + } + + public static LangBuilder itemName(ItemStack stack) { + return builder().add(stack.getHoverName() + .copy()); + } + + public static LangBuilder fluidName(FluidStack stack) { + return builder().add(stack.getDisplayName() + .copy()); + } + + public static LangBuilder number(double d) { + return builder().text(LangNumberFormat.format(d)); + } + + public static LangBuilder translate(String langKey, Object... args) { + return builder().translate(langKey, args); + } + + public static LangBuilder text(String text) { + return builder().text(text); + } + + // + + public static Object[] resolveBuilders(Object[] args) { + for (int i = 0; i < args.length; i++) + if (args[i]instanceof LangBuilder cb) + args[i] = cb.component(); + return args; + } + } diff --git a/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java new file mode 100644 index 000000000..5440c102a --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java @@ -0,0 +1,167 @@ +package com.simibubi.create.foundation.utility; + +import java.util.List; + +import joptsimple.internal.Strings; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.player.Player; + +public class LangBuilder { + + String namespace; + MutableComponent component; + + public LangBuilder(String namespace) { + this.namespace = namespace; + } + + public LangBuilder space() { + return text(" "); + } + + public LangBuilder newLine() { + return text("\n"); + } + + /** + * Appends a localised component
+ * To add an independently formatted localised component, use add() and a nested + * builder + * + * @param langKey + * @param args + * @return + */ + public LangBuilder translate(String langKey, Object... args) { + return add(new TranslatableComponent(namespace + "." + langKey, Lang.resolveBuilders(args))); + } + + /** + * Appends a text component + * + * @param literalText + * @return + */ + public LangBuilder text(String literalText) { + return add(new TextComponent(literalText)); + } + + /** + * Appends a colored text component + * + * @param format + * @param literalText + * @return + */ + public LangBuilder text(ChatFormatting format, String literalText) { + return add(new TextComponent(literalText).withStyle(format)); + } + + /** + * Appends a colored text component + * + * @param color + * @param literalText + * @return + */ + public LangBuilder text(int color, String literalText) { + return add(new TextComponent(literalText).withStyle(s -> s.withColor(color))); + } + + /** + * Appends the contents of another builder + * + * @param otherBuilder + * @return + */ + public LangBuilder add(LangBuilder otherBuilder) { + return add(otherBuilder.component()); + } + + /** + * Appends a component + * + * @param customComponent + * @return + */ + public LangBuilder add(MutableComponent customComponent) { + component = component == null ? customComponent : component.append(customComponent); + return this; + } + + // + + /** + * Applies the format to all added components + * + * @param format + * @return + */ + public LangBuilder style(ChatFormatting format) { + assertComponent(); + component = component.withStyle(format); + return this; + } + + /** + * Applies the color to all added components + * + * @param color + * @return + */ + public LangBuilder color(int color) { + assertComponent(); + component = component.withStyle(s -> s.withColor(color)); + return this; + } + + // + + public MutableComponent component() { + assertComponent(); + return component; + } + + public String string() { + return component().getString(); + } + + public String json() { + return Component.Serializer.toJson(component()); + } + + public void sendStatus(Player player) { + player.displayClientMessage(component(), true); + } + + public void sendChat(Player player) { + player.displayClientMessage(component(), false); + } + + public void addTo(List tooltip) { + tooltip.add(component()); + } + + public void forGoggles(List tooltip) { + forGoggles(tooltip, 0); + } + + public void forGoggles(List tooltip, int indents) { + tooltip.add(Lang.builder() + .text(Strings.repeat(' ', 4 + indents)) + .add(this) + .component()); + } + + // + + private void assertComponent() { + if (component == null) + throw new IllegalStateException("No components were added to builder"); + } + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/utility/LangNumberFormat.java b/src/main/java/com/simibubi/create/foundation/utility/LangNumberFormat.java new file mode 100644 index 000000000..e96b33e50 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LangNumberFormat.java @@ -0,0 +1,33 @@ +package com.simibubi.create.foundation.utility; + +import java.text.NumberFormat; +import java.util.Locale; + +import net.minecraft.client.Minecraft; + +public class LangNumberFormat { + + private NumberFormat format = NumberFormat.getNumberInstance(Locale.ROOT); + public static LangNumberFormat numberFormat = new LangNumberFormat(); + + public NumberFormat get() { + return format; + } + + public void update() { + format = NumberFormat.getInstance(Minecraft.getInstance() + .getLanguageManager() + .getSelected() + .getJavaLocale()); + format.setMaximumFractionDigits(2); + format.setMinimumFractionDigits(0); + format.setGroupingUsed(true); + } + + public static String format(double d) { + return numberFormat.get() + .format(d) + .replace("\u00A0", " "); + } + +} \ No newline at end of file