From 590c69a429951c1ab7a9fd2af458dd5e6750c074 Mon Sep 17 00:00:00 2001 From: xTracr Date: Fri, 3 May 2024 14:01:51 +0800 Subject: [PATCH] Localization update --- .../com/xtracr/realcamera/KeyBindings.java | 7 +- .../com/xtracr/realcamera/RealCamera.java | 2 +- .../com/xtracr/realcamera/RealCameraCore.java | 4 +- .../realcamera/config/ConfigScreen.java | 84 +++++++++---------- .../realcamera/gui/ModelViewScreen.java | 49 +++++------ .../realcamera/gui/NumberFieldWidget.java | 3 +- .../com/xtracr/realcamera/util/LocUtil.java | 46 ++++++++++ .../assets/realcamera/lang/en_us.json | 9 +- .../assets/realcamera/lang/zh_cn.json | 7 +- gradle.properties | 2 +- 10 files changed, 124 insertions(+), 89 deletions(-) create mode 100644 common/src/main/java/com/xtracr/realcamera/util/LocUtil.java diff --git a/common/src/main/java/com/xtracr/realcamera/KeyBindings.java b/common/src/main/java/com/xtracr/realcamera/KeyBindings.java index adbfbd2..9fe4970 100644 --- a/common/src/main/java/com/xtracr/realcamera/KeyBindings.java +++ b/common/src/main/java/com/xtracr/realcamera/KeyBindings.java @@ -2,6 +2,7 @@ import com.xtracr.realcamera.config.ConfigFile; import com.xtracr.realcamera.gui.ModelViewScreen; +import com.xtracr.realcamera.util.LocUtil; import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; import org.lwjgl.glfw.GLFW; @@ -11,12 +12,10 @@ import java.util.function.Consumer; public final class KeyBindings { - private static final String KEY_CATEGORY = "key.category." + RealCamera.FULL_ID; - private static final String KEY_ID = "key." + RealCamera.FULL_ID + "."; private static final Map> KEY_BINDINGS = new HashMap<>(); static { - createKeyBinding("modelViewGui", client -> client.setScreen(new ModelViewScreen())); + createKeyBinding("modelViewScreen", client -> client.setScreen(new ModelViewScreen())); createKeyBinding("togglePerspective", GLFW.GLFW_KEY_F6, client -> { boolean enabled = ConfigFile.config().enabled(); ConfigFile.load(); @@ -38,7 +37,7 @@ private static void createKeyBinding(String id, Consumer whenPr } private static void createKeyBinding(String id, int code, Consumer whenPressed) { - KEY_BINDINGS.put(new KeyBinding(KEY_ID + id, code, KEY_CATEGORY), whenPressed); + KEY_BINDINGS.put(new KeyBinding("key." + RealCamera.FULL_ID + "." + id, code, LocUtil.KEY_MOD_NAME), whenPressed); } public static void register(Consumer registerer) { diff --git a/common/src/main/java/com/xtracr/realcamera/RealCamera.java b/common/src/main/java/com/xtracr/realcamera/RealCamera.java index 8cbe19c..e89b0c1 100644 --- a/common/src/main/java/com/xtracr/realcamera/RealCamera.java +++ b/common/src/main/java/com/xtracr/realcamera/RealCamera.java @@ -12,8 +12,8 @@ public class RealCamera { public static final Logger LOGGER = LoggerFactory.getLogger(MODID); public static void initialize() { - ConfigFile.load(); CompatibilityHelper.initialize(); DisableHelper.initialize(); + ConfigFile.load(); } } diff --git a/common/src/main/java/com/xtracr/realcamera/RealCameraCore.java b/common/src/main/java/com/xtracr/realcamera/RealCameraCore.java index 268b46c..f91aeb3 100644 --- a/common/src/main/java/com/xtracr/realcamera/RealCameraCore.java +++ b/common/src/main/java/com/xtracr/realcamera/RealCameraCore.java @@ -3,6 +3,7 @@ import com.xtracr.realcamera.compat.DisableHelper; import com.xtracr.realcamera.config.BindingTarget; import com.xtracr.realcamera.config.ConfigFile; +import com.xtracr.realcamera.util.LocUtil; import com.xtracr.realcamera.util.MathUtil; import com.xtracr.realcamera.util.VertexRecorder; import net.minecraft.client.MinecraftClient; @@ -11,7 +12,6 @@ import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; -import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.RotationAxis; import net.minecraft.util.math.Vec3d; @@ -123,7 +123,7 @@ public static void computeCamera() { } if (currentTarget.isEmpty()) { Entity player = MinecraftClient.getInstance().player; - if (readyToSendMessage && player != null) player.sendMessage(Text.translatable("message." + RealCamera.FULL_ID + ".bindingFailed")); + if (readyToSendMessage && player != null) player.sendMessage(LocUtil.MESSAGE("bindingFailed", LocUtil.MOD_NAME(), LocUtil.MODEL_VIEW_TITLE())); active = readyToSendMessage = false; } else readyToSendMessage = true; normal.rotateLocal((float) Math.toRadians(currentTarget.yaw()), normal.m10, normal.m11, normal.m12); diff --git a/common/src/main/java/com/xtracr/realcamera/config/ConfigScreen.java b/common/src/main/java/com/xtracr/realcamera/config/ConfigScreen.java index a5b1c12..6f9a8fe 100644 --- a/common/src/main/java/com/xtracr/realcamera/config/ConfigScreen.java +++ b/common/src/main/java/com/xtracr/realcamera/config/ConfigScreen.java @@ -1,19 +1,14 @@ package com.xtracr.realcamera.config; -import com.xtracr.realcamera.RealCamera; +import com.xtracr.realcamera.util.LocUtil; import me.shedaniel.clothconfig2.api.ConfigBuilder; import me.shedaniel.clothconfig2.api.ConfigCategory; import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; import me.shedaniel.clothconfig2.impl.builders.SubCategoryBuilder; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.text.Text; import net.minecraft.util.Formatting; public class ConfigScreen { - private static final String CATEGORY = "config.category." + RealCamera.FULL_ID + "."; - private static final String OPTION = "config.option." + RealCamera.FULL_ID + "."; - private static final String TOOLTIP = "config.tooltip." + RealCamera.FULL_ID + "."; - public static Screen create(Screen parent) { ConfigFile.load(); final ModConfig config = ConfigFile.config(); @@ -21,107 +16,106 @@ public static Screen create(Screen parent) { .setParentScreen(parent) .transparentBackground() .setSavingRunnable(ConfigFile::save) - .setTitle(Text.translatable("config.title." + RealCamera.FULL_ID)); + .setTitle(LocUtil.MOD_NAME()); ConfigEntryBuilder entryBuilder = builder.entryBuilder(); - ConfigCategory general = builder.getOrCreateCategory(Text.translatable(CATEGORY + "general")); - ConfigCategory classic = builder.getOrCreateCategory(Text.translatable(CATEGORY + "classic")); - ConfigCategory binding = builder.getOrCreateCategory(Text.translatable(CATEGORY + "binding")); + ConfigCategory general = builder.getOrCreateCategory(LocUtil.CONFIG_CATEGORY("general")); + ConfigCategory classic = builder.getOrCreateCategory(LocUtil.CONFIG_CATEGORY("classic")); + ConfigCategory binding = builder.getOrCreateCategory(LocUtil.CONFIG_CATEGORY("binding")); - general.addEntry(entryBuilder.startBooleanToggle(Text.translatable(OPTION + "enabled"), config.enabled) + general.addEntry(entryBuilder.startBooleanToggle(LocUtil.CONFIG_OPTION("enabled"), config.enabled) .setSaveConsumer(b -> config.enabled = b) .build()); - general.addEntry(entryBuilder.startBooleanToggle(Text.translatable(OPTION + "isClassic"), config.isClassic) + general.addEntry(entryBuilder.startBooleanToggle(LocUtil.CONFIG_OPTION("isClassic"), config.isClassic) .setDefaultValue(false) - .setTooltip(Text.translatable(TOOLTIP + "isClassic")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("isClassic")) .setSaveConsumer(b -> config.isClassic = b) .build()); - general.addEntry(entryBuilder.startBooleanToggle(Text.translatable(OPTION + "dynamicCrosshair"), config.dynamicCrosshair) + general.addEntry(entryBuilder.startBooleanToggle(LocUtil.CONFIG_OPTION("dynamicCrosshair"), config.dynamicCrosshair) .setDefaultValue(false) - .setTooltip(Text.translatable(TOOLTIP + "dynamicCrosshair")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("dynamicCrosshair")) .setSaveConsumer(b -> config.dynamicCrosshair = b) .build()); - general.addEntry(entryBuilder.startBooleanToggle(Text.translatable(OPTION + "renderModel"), config.renderModel) + general.addEntry(entryBuilder.startBooleanToggle(LocUtil.CONFIG_OPTION("renderModel"), config.renderModel) .setDefaultValue(true) - .setTooltip(Text.translatable(TOOLTIP + "renderModel")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("renderModel")) .setSaveConsumer(b -> config.renderModel = b) .build()); - general.addEntry(entryBuilder.startDoubleField(Text.translatable(OPTION + "adjustStep"), config.adjustStep) + general.addEntry(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("adjustStep"), config.adjustStep) .setDefaultValue(0.01) .setMin(0.0) .setMax(ModConfig.MAX_DOUBLE) - .setTooltip(Text.translatable(TOOLTIP + "adjustStep")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("adjustStep")) .setSaveConsumer(d -> config.adjustStep = d) .build()); - classic.addEntry(entryBuilder.startEnumSelector(Text.translatable(OPTION + "classicAdjustMode"), ModConfig.Classic.AdjustMode.class, config.classic.adjustMode) + classic.addEntry(entryBuilder.startEnumSelector(LocUtil.CONFIG_OPTION("classicAdjustMode"), ModConfig.Classic.AdjustMode.class, config.classic.adjustMode) .setDefaultValue(ModConfig.Classic.AdjustMode.CAMERA) - .setTooltip(Text.translatable(TOOLTIP + "classicAdjustMode")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("classicAdjustMode")) .setSaveConsumer(e -> config.classic.adjustMode = e) .build()); - classic.addEntry(entryBuilder.startDoubleField(Text.translatable(OPTION + "scale"), config.classic.scale) + classic.addEntry(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("scale"), config.classic.scale) .setDefaultValue(8.0) .setMin(0.0) .setMax(64.0) - .setTooltip(Text.translatable(TOOLTIP + "scale")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("scale")) .setSaveConsumer(d -> config.classic.scale = d) .build()); - SubCategoryBuilder classicCameraOffset = entryBuilder.startSubCategory(Text.translatable(CATEGORY + "cameraOffset")) - .setTooltip(Text.translatable(TOOLTIP + "classicOffset"), Text.translatable(TOOLTIP + "classicOffset_n")); - classicCameraOffset.add(entryBuilder.startDoubleField(Text.translatable(OPTION + "cameraOffset", "X"), config.classic.cameraX) + SubCategoryBuilder classicCameraOffset = entryBuilder.startSubCategory(LocUtil.CONFIG_CATEGORY("cameraOffset")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("classicOffset"), LocUtil.CONFIG_TOOLTIP("classicOffset_n")); + classicCameraOffset.add(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("cameraOffset", "X"), config.classic.cameraX) .setDefaultValue(-0.5) .setMin(ModConfig.MIN_DOUBLE) .setMax(ModConfig.MAX_DOUBLE) .setSaveConsumer(d -> config.classic.cameraX = d) .build()); - classicCameraOffset.add(entryBuilder.startDoubleField(Text.translatable(OPTION + "cameraOffset", "Y"), config.classic.cameraY) + classicCameraOffset.add(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("cameraOffset", "Y"), config.classic.cameraY) .setDefaultValue(0.04) .setMin(ModConfig.MIN_DOUBLE) .setMax(ModConfig.MAX_DOUBLE) .setSaveConsumer(d -> config.classic.cameraY = d) .build()); - classicCameraOffset.add(entryBuilder.startDoubleField(Text.translatable(OPTION + "cameraOffset", "Z"), config.classic.cameraZ) + classicCameraOffset.add(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("cameraOffset", "Z"), config.classic.cameraZ) .setDefaultValue(-0.15) .setMin(ModConfig.MIN_DOUBLE) .setMax(ModConfig.MAX_DOUBLE) .setSaveConsumer(d -> config.classic.cameraZ = d) .build()); classic.addEntry(classicCameraOffset.build()); - SubCategoryBuilder classicCenterOffset = entryBuilder.startSubCategory(Text.translatable(CATEGORY + "centerOffset")) - .setTooltip(Text.translatable(TOOLTIP + "centerOffset")); - classicCenterOffset.add(entryBuilder.startDoubleField(Text.translatable(OPTION + "centerOffset", "X"), config.classic.centerX) + SubCategoryBuilder classicCenterOffset = entryBuilder.startSubCategory(LocUtil.CONFIG_CATEGORY("centerOffset")).setTooltip(LocUtil.CONFIG_TOOLTIP("centerOffset")); + classicCenterOffset.add(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("centerOffset", "X"), config.classic.centerX) .setDefaultValue(0.0) .setMin(ModConfig.MIN_DOUBLE) .setMax(ModConfig.MAX_DOUBLE) .setSaveConsumer(d -> config.classic.centerX = d) .build()); - classicCenterOffset.add(entryBuilder.startDoubleField(Text.translatable(OPTION + "centerOffset", "Y"), config.classic.centerY) + classicCenterOffset.add(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("centerOffset", "Y"), config.classic.centerY) .setDefaultValue(0.0) .setMin(ModConfig.MIN_DOUBLE) .setMax(ModConfig.MAX_DOUBLE) .setSaveConsumer(d -> config.classic.centerY = d) .build()); - classicCenterOffset.add(entryBuilder.startDoubleField(Text.translatable(OPTION + "centerOffset", "Z"), config.classic.centerZ) + classicCenterOffset.add(entryBuilder.startDoubleField(LocUtil.CONFIG_OPTION("centerOffset", "Z"), config.classic.centerZ) .setDefaultValue(0.0) .setMin(ModConfig.MIN_DOUBLE) .setMax(ModConfig.MAX_DOUBLE) .setSaveConsumer(d -> config.classic.centerZ = d) .build()); classic.addEntry(classicCenterOffset.build()); - SubCategoryBuilder classicCameraRotation = entryBuilder.startSubCategory(Text.translatable(CATEGORY + "cameraRotation")) - .setTooltip(Text.translatable(TOOLTIP + "cameraRotation"), Text.translatable(TOOLTIP + "cameraRotation_n")); - classicCameraRotation.add(entryBuilder.startFloatField(Text.translatable(OPTION + "pitch"), config.classic.pitch) + SubCategoryBuilder classicCameraRotation = entryBuilder.startSubCategory(LocUtil.CONFIG_CATEGORY("cameraRotation")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("cameraRotation"), LocUtil.CONFIG_TOOLTIP("cameraRotation_n")); + classicCameraRotation.add(entryBuilder.startFloatField(LocUtil.CONFIG_OPTION("pitch"), config.classic.pitch) .setDefaultValue(0.0f) .setMin(-180.0f) .setMax(180.0f) .setSaveConsumer(f -> config.classic.pitch = f) .build()); - classicCameraRotation.add(entryBuilder.startFloatField(Text.translatable(OPTION + "yaw"), config.classic.yaw) + classicCameraRotation.add(entryBuilder.startFloatField(LocUtil.CONFIG_OPTION("yaw"), config.classic.yaw) .setDefaultValue(18.0f) .setMin(-180.0f) .setMax(180.0f) .setSaveConsumer(f -> config.classic.yaw = f) .build()); - classicCameraRotation.add(entryBuilder.startFloatField(Text.translatable(OPTION + "roll"), config.classic.roll) + classicCameraRotation.add(entryBuilder.startFloatField(LocUtil.CONFIG_OPTION("roll"), config.classic.roll) .setDefaultValue(0.0f) .setMin(-180.0f) .setMax(180.0f) @@ -129,20 +123,20 @@ public static Screen create(Screen parent) { .build()); classic.addEntry(classicCameraRotation.build()); - binding.addEntry(entryBuilder.startTextDescription(Text.translatable(OPTION + "toModelViewGui", - Text.translatable("screen." + RealCamera.FULL_ID + ".modelView_title").styled(s -> s.withColor(Formatting.BLUE)))) + binding.addEntry(entryBuilder.startTextDescription(LocUtil.CONFIG_OPTION("toModelViewScreen", + LocUtil.MODEL_VIEW_TITLE().styled(s -> s.withColor(Formatting.BLUE)))) .build()); - binding.addEntry(entryBuilder.startBooleanToggle(Text.translatable(OPTION + "adjustOffset"), config.binding.adjustOffset) + binding.addEntry(entryBuilder.startBooleanToggle(LocUtil.CONFIG_OPTION("adjustOffset"), config.binding.adjustOffset) .setDefaultValue(true) - .setTooltip(Text.translatable(TOOLTIP + "adjustOffset")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("adjustOffset")) .setSaveConsumer(b -> config.binding.adjustOffset = b) .build()); - binding.addEntry(entryBuilder.startBooleanToggle(Text.translatable(OPTION + "renderStuckObjects"), config.renderModel) + binding.addEntry(entryBuilder.startBooleanToggle(LocUtil.CONFIG_OPTION("renderStuckObjects"), config.renderModel) .setDefaultValue(true) - .setTooltip(Text.translatable(TOOLTIP + "renderStuckObjects")) + .setTooltip(LocUtil.CONFIG_TOOLTIP("renderStuckObjects")) .setSaveConsumer(b -> config.renderModel = b) .build()); - binding.addEntry(entryBuilder.startStrList(Text.translatable(OPTION + "disableRenderItems"), config.binding.disableRenderItems) + binding.addEntry(entryBuilder.startStrList(LocUtil.CONFIG_OPTION("disableRenderItems"), config.binding.disableRenderItems) .setDefaultValue(ModConfig.Binding.defaultDisableRenderItems) .setSaveConsumer(l -> config.binding.disableRenderItems = l) .build()); diff --git a/common/src/main/java/com/xtracr/realcamera/gui/ModelViewScreen.java b/common/src/main/java/com/xtracr/realcamera/gui/ModelViewScreen.java index 13b842b..f7a0b04 100644 --- a/common/src/main/java/com/xtracr/realcamera/gui/ModelViewScreen.java +++ b/common/src/main/java/com/xtracr/realcamera/gui/ModelViewScreen.java @@ -1,15 +1,14 @@ package com.xtracr.realcamera.gui; -import com.xtracr.realcamera.RealCamera; import com.xtracr.realcamera.RealCameraCore; import com.xtracr.realcamera.config.BindingTarget; import com.xtracr.realcamera.config.ConfigFile; import com.xtracr.realcamera.config.ModConfig; +import com.xtracr.realcamera.util.LocUtil; import com.xtracr.realcamera.util.MathUtil; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.*; import net.minecraft.client.render.DiffuseLighting; import net.minecraft.client.render.entity.EntityRenderDispatcher; @@ -29,8 +28,6 @@ import java.util.Map; public class ModelViewScreen extends Screen { - private static final String KEY_WIDGET = "screen.widget." + RealCamera.FULL_ID + ".modelView_"; - private static final String KEY_TOOLTIP = "screen.tooltip." + RealCamera.FULL_ID + ".modelView_"; protected int xSize = 406, ySize = 206, widgetWidth = (xSize - ySize) / 4 - 8, widgetHeight = 18; protected int x, y; private boolean initialized; @@ -43,10 +40,10 @@ public class ModelViewScreen extends Screen { private NumberFieldWidget forwardUField, forwardVField, upwardUField, upwardVField, posUField, posVField, scaleField, depthField; private NumberFieldWidget priorityField; private final CyclingButtonWidget selectingButton = createCyclingButton(Map.of( - 0, Text.translatable(KEY_WIDGET + "forwardMode").styled(s -> s.withColor(Formatting.GREEN)), - 1, Text.translatable(KEY_WIDGET + "upwardMode").styled(s -> s.withColor(Formatting.RED)), - 2, Text.translatable(KEY_WIDGET + "posMode").styled(s -> s.withColor(Formatting.BLUE))), - widgetWidth * 2 + 4, Text.translatable(KEY_WIDGET + "selectMode")); + 0, LocUtil.MODEL_VIEW_WIDGET("forwardMode").styled(s -> s.withColor(Formatting.GREEN)), + 1, LocUtil.MODEL_VIEW_WIDGET("upwardMode").styled(s -> s.withColor(Formatting.RED)), + 2, LocUtil.MODEL_VIEW_WIDGET("posMode").styled(s -> s.withColor(Formatting.BLUE))), + widgetWidth * 2 + 4, LocUtil.MODEL_VIEW_WIDGET("selectMode")); private final CyclingTexturedButton pauseButton = new CyclingTexturedButton(0, 0, 0, 2); private final CyclingTexturedButton bindXButton = new CyclingTexturedButton(16, 0, 1, 2); private final CyclingTexturedButton bindYButton = new CyclingTexturedButton(16, 0, 0, 2); @@ -62,7 +59,7 @@ public class ModelViewScreen extends Screen { private final DoubleSliderWidget rollSlider = createSlider("roll", widgetWidth * 2 - 18, -180.0, 180.0); public ModelViewScreen() { - super(Text.translatable("screen." + RealCamera.FULL_ID + ".modelView_title")); + super(LocUtil.MODEL_VIEW_TITLE()); } @Override @@ -97,8 +94,8 @@ private void initLeftWidgets(final int category) { gridWidget.getMainPositioner().margin(4, 2, 0, 0); Positioner smallPositioner = gridWidget.copyPositioner().margin(5, 3, 1, 1); GridWidget.Adder adder = gridWidget.createAdder(2); - adder.add(createButton(Text.translatable(KEY_WIDGET + "settings"), widgetWidth, button -> initWidgets(0, page))); - adder.add(createButton(Text.translatable(KEY_WIDGET + "preview"), widgetWidth, button -> initWidgets(1, page))); + adder.add(createButton(LocUtil.MODEL_VIEW_WIDGET("settings"), widgetWidth, button -> initWidgets(0, page))); + adder.add(createButton(LocUtil.MODEL_VIEW_WIDGET("preview"), widgetWidth, button -> initWidgets(1, page))); forwardUField = createFloatField(widgetWidth, 0, forwardUField); forwardVField = createFloatField(widgetWidth, 0, forwardVField); upwardUField = createFloatField(widgetWidth, 0, upwardUField); @@ -114,23 +111,23 @@ private void initLeftWidgets(final int category) { if (category == 0) { adder.add(entityPitchSlider, 2); adder.add(entityYawSlider, 2); - adder.add(selectingButton, 2).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "selectMode"))); + adder.add(selectingButton, 2).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("selectMode")); adder.add(forwardUField, 1, smallPositioner); adder.add(forwardVField, 1, smallPositioner); adder.add(upwardUField, 1, smallPositioner); adder.add(upwardVField, 1, smallPositioner); adder.add(posUField, 1, smallPositioner); adder.add(posVField, 1, smallPositioner); - adder.add(textureIdField, 2, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "textureId"))); + adder.add(textureIdField, 2, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("textureId")); } else if (category == 1) { Positioner sliderPositioner = gridWidget.copyPositioner().margin(-20, 2, 0, 0); - adder.add(bindXButton, 1, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "bindButtons"))); + adder.add(bindXButton, 1, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("bindButtons")); adder.add(offsetXSlider, 1, sliderPositioner); - adder.add(bindYButton, 1, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "bindButtons"))); + adder.add(bindYButton, 1, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("bindButtons")); adder.add(offsetYSlider, 1, sliderPositioner); - adder.add(bindZButton, 1, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "bindButtons"))); + adder.add(bindZButton, 1, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("bindButtons")); adder.add(offsetZSlider, 1, sliderPositioner); - adder.add(bindRotButton, 1, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "bindButtons"))); + adder.add(bindRotButton, 1, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("bindButtons")); adder.add(pitchSlider, 1, sliderPositioner); adder.add(yawSlider, 2, gridWidget.copyPositioner().margin(26, 2, 0, 0)); adder.add(new TexturedButton(32, 0, button -> { @@ -142,18 +139,18 @@ private void initLeftWidgets(final int category) { rollSlider.setValue(0); }), 1, smallPositioner); adder.add(rollSlider, 1, sliderPositioner); - adder.add(scaleField, 1, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "scale"))); - adder.add(depthField, 1, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "depth"))); + adder.add(scaleField, 1, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("scale")); + adder.add(depthField, 1, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("depth")); } - adder.add(createButton(Text.translatable(KEY_WIDGET + "save"), widgetWidth, button -> { + adder.add(createButton(LocUtil.MODEL_VIEW_WIDGET("save"), widgetWidth, button -> { ConfigFile.config().putTarget(generateBindingTarget()); ConfigFile.save(); initWidgets(category, page); })); adder.add(priorityField = NumberFieldWidget.ofInt(textRenderer, widgetWidth - 2, widgetHeight - 2, 0, priorityField), 1, smallPositioner) - .setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "priority"))); + .setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("priority")); adder.add(nameField = createTextField(widgetWidth * 2 + 4, nameField), 2, smallPositioner) - .setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "targetName"))); + .setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("targetName")); nameField.setMaxLength(20); gridWidget.refreshPositions(); SimplePositioningWidget.setPos(gridWidget, x, y + 2, x + (xSize - ySize) / 2 - 4, y + ySize, 0, 0); @@ -168,17 +165,17 @@ private void initRightWidgets(final int page) { Positioner smallPositioner = gridWidget.copyPositioner().margin(5, 3, 1, 1); GridWidget.Adder adder = gridWidget.createAdder(2); addDrawableChild(new TexturedButton(x + (xSize + ySize) / 2 + 8, y + 4, 16, 16, 0, 32, button -> initWidgets(category, (page - 1 + pages) % pages))); - addDrawableChild(new TextWidget(x + (xSize + ySize) / 2 + 30, y + 4, widgetWidth * 2 - 40, widgetHeight, Text.of((page + 1) + " / " + pages), textRenderer)); + addDrawableChild(new TextWidget(x + (xSize + ySize) / 2 + 30, y + 4, widgetWidth * 2 - 40, widgetHeight, LocUtil.literal((page + 1) + " / " + pages), textRenderer)); addDrawableChild(new TexturedButton(x + xSize - 21, y + 4, 16, 16, 16, 32, button -> initWidgets(category, (page + 1) % pages))); for (int i = page * widgetsPerPage; i < Math.min((page + 1) * widgetsPerPage, targetList.size()); i++) { BindingTarget target = targetList.get(i); String name = target.name; - adder.add(createButton(Text.literal(name), widgetWidth * 2 - 18, button -> loadBindingTarget(target))); + adder.add(createButton(LocUtil.literal(name), widgetWidth * 2 - 18, button -> loadBindingTarget(target))); adder.add(new TexturedButton(32, 32, button -> { targetList.remove(target); ConfigFile.save(); initWidgets(category, page * widgetsPerPage >= targetList.size() && !targetList.isEmpty() ? page - 1 : page); - }), 1, smallPositioner).setTooltip(Tooltip.of(Text.translatable(KEY_TOOLTIP + "delete"))); + }), 1, smallPositioner).setTooltip(LocUtil.MODEL_VIEW_TOOLTIP("delete")); } gridWidget.refreshPositions(); SimplePositioningWidget.setPos(gridWidget, x + (xSize + ySize) / 2 + 4, y + 22, x + xSize, y + ySize, 0, 0); @@ -288,7 +285,7 @@ private CyclingButtonWidget createCyclingButton(Map mess } private DoubleSliderWidget createSlider(String key, int width, double min, double max) { - return new DoubleSliderWidget(width, widgetHeight, 0, min, max, d -> Text.translatable(KEY_WIDGET + key, MathUtil.round(d, 2))); + return new DoubleSliderWidget(width, widgetHeight, 0, min, max, d -> LocUtil.MODEL_VIEW_WIDGET(key, MathUtil.round(d, 2))); } private NumberFieldWidget createFloatField(int width, float defaultValue, @Nullable NumberFieldWidget copyFrom) { diff --git a/common/src/main/java/com/xtracr/realcamera/gui/NumberFieldWidget.java b/common/src/main/java/com/xtracr/realcamera/gui/NumberFieldWidget.java index 8ca55ba..15a58ec 100644 --- a/common/src/main/java/com/xtracr/realcamera/gui/NumberFieldWidget.java +++ b/common/src/main/java/com/xtracr/realcamera/gui/NumberFieldWidget.java @@ -1,5 +1,6 @@ package com.xtracr.realcamera.gui; +import com.xtracr.realcamera.util.LocUtil; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.tooltip.Tooltip; @@ -70,7 +71,7 @@ protected void checkText() { if (value.compareTo(minimum) < 0) throw new Exception("< " + minimum); if (value.compareTo(maximum) > 0) throw new Exception("> " + maximum); } catch (Exception exception) { - super.setTooltip(Tooltip.of(Text.literal("Invalid number: " + exception.getMessage()).styled(s -> s.withColor(Formatting.RED)))); + super.setTooltip(Tooltip.of(LocUtil.literal("Invalid number: " + exception.getMessage()).styled(s -> s.withColor(Formatting.RED)))); setRenderTextProvider((string, firstCharacterIndex) -> OrderedText.styledForwardsVisitedString(string, Style.EMPTY.withColor(Formatting.RED))); } } diff --git a/common/src/main/java/com/xtracr/realcamera/util/LocUtil.java b/common/src/main/java/com/xtracr/realcamera/util/LocUtil.java new file mode 100644 index 0000000..7c7f630 --- /dev/null +++ b/common/src/main/java/com/xtracr/realcamera/util/LocUtil.java @@ -0,0 +1,46 @@ +package com.xtracr.realcamera.util; + +import com.xtracr.realcamera.RealCamera; +import net.minecraft.client.gui.tooltip.Tooltip; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; + +public class LocUtil { + public static final String KEY_MOD_NAME = "general." + RealCamera.FULL_ID + ".modName"; + + public static MutableText MOD_NAME() { + return Text.translatable(KEY_MOD_NAME); + } + + public static MutableText CONFIG_CATEGORY(String key) { + return Text.translatable("config.category." + RealCamera.FULL_ID + "." + key); + } + + public static MutableText CONFIG_OPTION(String key, Object... args) { + return Text.translatable("config.option." + RealCamera.FULL_ID + "." + key, args); + } + + public static MutableText CONFIG_TOOLTIP(String key) { + return Text.translatable("config.tooltip." + RealCamera.FULL_ID + "." + key); + } + + public static MutableText MESSAGE(String key, Object... args) { + return Text.translatable("message." + RealCamera.FULL_ID + "." + key, args); + } + + public static MutableText MODEL_VIEW_TITLE() { + return Text.translatable("screen." + RealCamera.FULL_ID + ".modelView_title"); + } + + public static MutableText MODEL_VIEW_WIDGET(String key, Object... args) { + return Text.translatable("screen.widget." + RealCamera.FULL_ID + ".modelView_" + key, args); + } + + public static Tooltip MODEL_VIEW_TOOLTIP(String key, Object... args) { + return Tooltip.of(Text.translatable("screen.tooltip." + RealCamera.FULL_ID + ".modelView_" + key, args)); + } + + public static MutableText literal(String string) { + return Text.literal(string); + } +} diff --git a/common/src/main/resources/assets/realcamera/lang/en_us.json b/common/src/main/resources/assets/realcamera/lang/en_us.json index 65a0778..c002147 100644 --- a/common/src/main/resources/assets/realcamera/lang/en_us.json +++ b/common/src/main/resources/assets/realcamera/lang/en_us.json @@ -1,6 +1,6 @@ { - "key.category.xtracr_realcamera": "Real Camera", - "key.xtracr_realcamera.modelViewGui": "Open Model View GUI", + "general.xtracr_realcamera.modName": "Real Camera", + "key.xtracr_realcamera.modelViewScreen": "Open Model View Screen", "key.xtracr_realcamera.togglePerspective": "Enable/Disable", "key.xtracr_realcamera.toggleAdjustMode": "Toggle Adjust Mode", "key.xtracr_realcamera.toggleCameraMode": "Toggle Camera Mode", @@ -12,7 +12,6 @@ "key.xtracr_realcamera.adjustRIGHT": "Adjust RIGHT", "modmenu.descriptionTranslation.realcamera": "Make the camera more realistic in the first-person view.", - "config.title.xtracr_realcamera": "Real Camera", "config.category.xtracr_realcamera.general": "General", "config.category.xtracr_realcamera.binding": "Binding Mode", "config.category.xtracr_realcamera.classic": "Classic Mode", @@ -36,7 +35,7 @@ "config.option.xtracr_realcamera.pitch": "Pitch", "config.option.xtracr_realcamera.yaw": "Yaw", "config.option.xtracr_realcamera.roll": "Roll", - "config.option.xtracr_realcamera.toModelViewGui": "For detailed settings, please go to the %s screen (key bind need to be set to open it)", + "config.option.xtracr_realcamera.toModelViewScreen": "For detailed settings, please go to the %s screen (key bind need to be set to open it)", "config.option.xtracr_realcamera.adjustOffset": "Adjust Camera Offset", "config.option.xtracr_realcamera.renderStuckObjects": "Render Stuck Objects", "config.option.xtracr_realcamera.disableRenderItems": "Disable rendering when holding", @@ -49,7 +48,7 @@ "config.tooltip.xtracr_realcamera.adjustOffset": "When pressing the adjustment key, adjust the offset or rotation of camera", "config.tooltip.xtracr_realcamera.renderStuckObjects": "Arrows, bee stings and other objects that can be stuck in the player's body", - "message.xtracr_realcamera.bindingFailed": "[Real Camera]: Binding failed, please go to the Model View screen and configure manually", + "message.xtracr_realcamera.bindingFailed": "[%s]: Binding failed, please go to the %s screen and configure manually", "screen.xtracr_realcamera.modelView_title": "Model View", "screen.widget.xtracr_realcamera.modelView_selectMode": "Selecting", diff --git a/common/src/main/resources/assets/realcamera/lang/zh_cn.json b/common/src/main/resources/assets/realcamera/lang/zh_cn.json index e589d2c..17ac37f 100644 --- a/common/src/main/resources/assets/realcamera/lang/zh_cn.json +++ b/common/src/main/resources/assets/realcamera/lang/zh_cn.json @@ -1,6 +1,6 @@ { - "key.category.xtracr_realcamera": "Real Camera", - "key.xtracr_realcamera.modelViewGui": "打开模型视图界面", + "general.xtracr_realcamera.modName": "Real Camera", + "key.xtracr_realcamera.modelViewScreen": "打开模型视图界面", "key.xtracr_realcamera.togglePerspective": "开启/关闭", "key.xtracr_realcamera.toggleAdjustMode": "切换调整模式", "key.xtracr_realcamera.toggleCameraMode": "切换摄像头模式", @@ -12,7 +12,6 @@ "key.xtracr_realcamera.adjustRIGHT": "向右调整", "modmenu.descriptionTranslation.realcamera": "使第一人称视角下的摄像头更加真实。", - "config.title.xtracr_realcamera": "Real Camera", "config.category.xtracr_realcamera.general": "通用", "config.category.xtracr_realcamera.binding": "绑定模式", "config.category.xtracr_realcamera.classic": "经典模式", @@ -36,7 +35,7 @@ "config.option.xtracr_realcamera.pitch": "俯仰角", "config.option.xtracr_realcamera.yaw": "偏航角", "config.option.xtracr_realcamera.roll": "翻滚角", - "config.option.xtracr_realcamera.toModelViewGui": "详细设置请前往%s界面(需设置快捷键来打开它)", + "config.option.xtracr_realcamera.toModelViewScreen": "详细设置请前往%s界面(需设置快捷键来打开它)", "config.option.xtracr_realcamera.adjustOffset": "调整摄像头偏移", "config.option.xtracr_realcamera.renderStuckObjects": "渲染卡在身上的物体", "config.option.xtracr_realcamera.disableRenderItems": "在手持...时禁用渲染", diff --git a/gradle.properties b/gradle.properties index f867f1f..5c3786b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.20.1-47.2.30 fabric_loader_version=0.15.10 yarn_mappings=1.20.1+build.10 # Mod Properties -mod_version=0.6.1-alpha.3 +mod_version=0.6.1-alpha.4 maven_group=com.xtracr.realcamera archives_base_name=realcamera # Dependencies