From 9455b6c442d1ef2862d578342198e85484ee50dc Mon Sep 17 00:00:00 2001 From: IM23a-spirgif Date: Mon, 28 Apr 2025 22:34:35 +0200 Subject: [PATCH] Added Translation support and configuration options --- .../net/fretux/knockedback/CarryManager.java | 10 +++---- .../fretux/knockedback/MobKillHandler.java | 4 +-- .../knockedback/PlayerExecutionHandler.java | 18 ++++++------- .../knockedback/client/ClientKeyHandler.java | 26 +++++++------------ .../client/ExecutionProgressOverlay.java | 1 - .../client/KnockedTimeOverlay.java | 3 ++- .../assets/knockedback/lang/de_de.json | 22 ++++++++++++++++ .../assets/knockedback/lang/en_us.json | 18 +++++++++++++ 8 files changed, 68 insertions(+), 34 deletions(-) create mode 100644 src/main/resources/assets/knockedback/lang/de_de.json create mode 100644 src/main/resources/assets/knockedback/lang/en_us.json diff --git a/src/main/java/net/fretux/knockedback/CarryManager.java b/src/main/java/net/fretux/knockedback/CarryManager.java index d8fdaf7..31c7acc 100644 --- a/src/main/java/net/fretux/knockedback/CarryManager.java +++ b/src/main/java/net/fretux/knockedback/CarryManager.java @@ -20,7 +20,7 @@ public class CarryManager { public static void toggleCarry(ServerPlayer carrier) { if (KnockedManager.isKnocked(carrier)) { - carrier.sendSystemMessage(Component.literal("You cannot carry others while you are knocked!")); + carrier.sendSystemMessage(Component.translatable("message.knockedback.cannot_carry_while_knocked")); return; } Optional existing = carrier.getPassengers().stream() @@ -54,8 +54,8 @@ public class CarryManager { if (knocked instanceof ServerPlayer spKnocked) { spKnocked.connection.send(mountPacket); } - carrier.sendSystemMessage(Component.literal("Picked up " + knocked.getName().getString())); - knocked.sendSystemMessage(Component.literal("You are being carried by " + carrier.getName().getString())); + carrier.sendSystemMessage(Component.translatable("message.knockedback.picked_up" + knocked.getName().getString())); + knocked.sendSystemMessage(Component.translatable("message.knockedback.being_carried" + carrier.getName().getString())); } @@ -67,8 +67,8 @@ public class CarryManager { if (knocked instanceof ServerPlayer spKnocked) { spKnocked.connection.send(dismountPacket); } - carrier.sendSystemMessage(Component.literal("Dropped " + knocked.getName().getString())); - knocked.sendSystemMessage(Component.literal("You have been dropped")); + carrier.sendSystemMessage(Component.translatable("message.knockedback.dropped" + knocked.getName().getString())); + knocked.sendSystemMessage(Component.translatable("message.knockedback.been_dropped")); } @SubscribeEvent diff --git a/src/main/java/net/fretux/knockedback/MobKillHandler.java b/src/main/java/net/fretux/knockedback/MobKillHandler.java index a5f0c04..602185e 100644 --- a/src/main/java/net/fretux/knockedback/MobKillHandler.java +++ b/src/main/java/net/fretux/knockedback/MobKillHandler.java @@ -133,8 +133,8 @@ public class MobKillHandler { new ExecutionProgressPacket(0) ); } - knocked.sendSystemMessage(Component.literal( - "You were executed by " + mob.getName().getString() + "!" + knocked.sendSystemMessage(Component.translatable( + "message.knockedback.you_were_executed " + mob.getName().getString() )); } diff --git a/src/main/java/net/fretux/knockedback/PlayerExecutionHandler.java b/src/main/java/net/fretux/knockedback/PlayerExecutionHandler.java index 8a030a3..81d0465 100644 --- a/src/main/java/net/fretux/knockedback/PlayerExecutionHandler.java +++ b/src/main/java/net/fretux/knockedback/PlayerExecutionHandler.java @@ -63,19 +63,19 @@ public class PlayerExecutionHandler { public static void startExecution(ServerPlayer executor, Player target) { if (KnockedManager.isKnocked(executor)) { - executor.sendSystemMessage(Component.literal("You cannot execute others while you are knocked!")); + executor.sendSystemMessage(Component.translatable("message.knockedback.cannot_carry_while_knocked")); return; } UUID knockedId = target.getUUID(); if (!KnockedManager.isKnocked(target)) return; if (CarryManager.isBeingCarried(target.getUUID())) { - executor.sendSystemMessage(Component.literal("Cannot execute someone you're carrying!")); + executor.sendSystemMessage(Component.translatable("message.knockedback.cannot_execute_while_knocked")); return; } if (executionAttempts.containsKey(knockedId)) return; executionAttempts.put(knockedId, new PlayerExecutionAttempt(executor.getUUID())); - executor.sendSystemMessage(Component.literal("Execution started...")); - target.sendSystemMessage(Component.literal("You're being executed!")); + executor.sendSystemMessage(Component.translatable("message.knockedback.execution_started")); + target.sendSystemMessage(Component.translatable("message.knockedback.being_executed")); } public static void cancelExecution(UUID knockedId) { @@ -83,7 +83,7 @@ public class PlayerExecutionHandler { if (attempt != null) { ServerPlayer knocked = getPlayerByUuid(knockedId); if (knocked != null) { - knocked.sendSystemMessage(Component.literal("Execution interrupted!")); + knocked.sendSystemMessage(Component.translatable("message.knockedback.execution_interrupted")); NetworkHandler.CHANNEL.send( PacketDistributor.PLAYER.with(() -> knocked), new ExecutionProgressPacket(0) @@ -91,7 +91,7 @@ public class PlayerExecutionHandler { } ServerPlayer executor = getPlayerByUuid(attempt.executorUuid); if (executor != null) { - executor.sendSystemMessage(Component.literal("Your execution was interrupted!")); + executor.sendSystemMessage(Component.translatable("message.knockedback.execution_interrupted_executor")); NetworkHandler.CHANNEL.send( PacketDistributor.PLAYER.with(() -> executor), new ExecutionProgressPacket(0) @@ -106,7 +106,7 @@ public class PlayerExecutionHandler { UUID hurtId = hurtPlayer.getUUID(); boolean wasExecutor = executionAttempts.values().removeIf(attempt -> attempt.executorUuid.equals(hurtId)); if (wasExecutor) { - hurtPlayer.sendSystemMessage(Component.literal("Execution canceled because you were hit!")); + hurtPlayer.sendSystemMessage(Component.translatable("message.knockedback.execution_interrupted")); } } @@ -130,9 +130,9 @@ public class PlayerExecutionHandler { new ExecutionProgressPacket(0) ); } - executor.sendSystemMessage(Component.literal("You executed " + knockedPlayer.getName().getString() + "!")); + executor.sendSystemMessage(Component.translatable("message.knockedback.you_executed" + knockedPlayer.getName().getString() + "!")); if (knockedPlayer instanceof ServerPlayer serverPlayer) { - serverPlayer.sendSystemMessage(Component.literal("You were executed by " + executor.getName().getString() + "!")); + serverPlayer.sendSystemMessage(Component.translatable("message.knockedback.you_were_executed" + executor.getName().getString() + "!")); } } diff --git a/src/main/java/net/fretux/knockedback/client/ClientKeyHandler.java b/src/main/java/net/fretux/knockedback/client/ClientKeyHandler.java index 46845bf..fb9f6bf 100644 --- a/src/main/java/net/fretux/knockedback/client/ClientKeyHandler.java +++ b/src/main/java/net/fretux/knockedback/client/ClientKeyHandler.java @@ -21,24 +21,22 @@ public class ClientKeyHandler { "key.categories.knockedback" ); - // This event still needs to be registered on the MOD bus for key mapping registration. - @Mod.EventBusSubscriber(modid = "knockedback", value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) - public static class KeyMappingRegistration { - @SubscribeEvent - public static void registerKeyMappings(RegisterKeyMappingsEvent event) { - event.register(EXECUTE_KEY); - } - } - public static final KeyMapping CARRY_KEY = new KeyMapping( "key.knockedback.carry", GLFW.GLFW_KEY_V, "key.categories.knockedback" ); - @SubscribeEvent - public static void registerCarryKey(RegisterKeyMappingsEvent e) { - e.register(CARRY_KEY); + @Mod.EventBusSubscriber(modid = "knockedback", value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) + public static class KeyMappingRegistration { + @SubscribeEvent + public static void registerKeyMappings(RegisterKeyMappingsEvent event) { + event.register(EXECUTE_KEY); + } + @SubscribeEvent + public static void registerCarryKey(RegisterKeyMappingsEvent e) { + e.register(CARRY_KEY); + } } @SubscribeEvent @@ -46,10 +44,6 @@ public class ClientKeyHandler { if (Minecraft.getInstance().screen != null) return; if (EXECUTE_KEY.consumeClick()) { if (Minecraft.getInstance().player != null) { - Minecraft.getInstance().player.sendSystemMessage( - Component.literal("Key B pressed! Sending execution request to server.") - ); - // Send the packet to the server NetworkHandler.CHANNEL.sendToServer(new ExecuteKnockedPacket()); } } diff --git a/src/main/java/net/fretux/knockedback/client/ExecutionProgressOverlay.java b/src/main/java/net/fretux/knockedback/client/ExecutionProgressOverlay.java index 2db0302..4def5b9 100644 --- a/src/main/java/net/fretux/knockedback/client/ExecutionProgressOverlay.java +++ b/src/main/java/net/fretux/knockedback/client/ExecutionProgressOverlay.java @@ -1,6 +1,5 @@ package net.fretux.knockedback.client; -import com.mojang.blaze3d.systems.RenderSystem; import net.fretux.knockedback.KnockedBack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; diff --git a/src/main/java/net/fretux/knockedback/client/KnockedTimeOverlay.java b/src/main/java/net/fretux/knockedback/client/KnockedTimeOverlay.java index 0046234..344065a 100644 --- a/src/main/java/net/fretux/knockedback/client/KnockedTimeOverlay.java +++ b/src/main/java/net/fretux/knockedback/client/KnockedTimeOverlay.java @@ -4,6 +4,7 @@ import net.fretux.knockedback.KnockedBack; import net.fretux.knockedback.client.ClientKnockedState; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.resources.language.I18n; import net.minecraftforge.client.event.RenderGuiOverlayEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -16,7 +17,7 @@ public class KnockedTimeOverlay { if (!ClientKnockedState.isKnocked()) return; Minecraft mc = Minecraft.getInstance(); GuiGraphics guiGraphics = event.getGuiGraphics(); - String text = "Time until recovery: " + (ClientKnockedState.getTimeLeft() / 20) + " s"; + String text = I18n.get("overlay.knockedback.recovery_time", ClientKnockedState.getTimeLeft() / 20); int screenWidth = mc.getWindow().getGuiScaledWidth(); int x = screenWidth / 2 - mc.font.width(text) / 2; int y = 10; diff --git a/src/main/resources/assets/knockedback/lang/de_de.json b/src/main/resources/assets/knockedback/lang/de_de.json new file mode 100644 index 0000000..765dfaf --- /dev/null +++ b/src/main/resources/assets/knockedback/lang/de_de.json @@ -0,0 +1,22 @@ +{ + "key.knockedback.carry": "Tragen", + "key.knockedback.execute": "Hinrichten", + "key.categories.knockedback": "Knockedback-Steuerung", + + "message.knockedback.cannot_carry_while_knocked": "Du kannst niemanden tragen, während du betäubt bist!", + "message.knockedback.cannot_execute_while_knocked": "Du kannst niemanden hinrichten, während du betäubt bist!", + "message.knockedback.picked_up": "Hochgehoben %s", + "message.knockedback.being_carried": "Du wirst von %s getragen", + "message.knockedback.dropped": "Abgesetzt %s", + "message.knockedback.been_dropped": "Du wurdest abgesetzt", + + "message.knockedback.execution_started": "Hinrichtung gestartet...", + "message.knockedback.being_executed": "Du wirst hingerichtet!", + "message.knockedback.execution_interrupted": "Hinrichtung abgebrochen!", + "message.knockedback.execution_interrupted_executor": "Deine Hinrichtung wurde abgebrochen!", + "message.knockedback.you_executed": "Du hast %s hingerichtet!", + "message.knockedback.you_were_executed": "Du wurdest von %s hingerichtet!", + + "overlay.knockedback.recovery_time": "Zeit bis Erholung: %s s" +} + diff --git a/src/main/resources/assets/knockedback/lang/en_us.json b/src/main/resources/assets/knockedback/lang/en_us.json new file mode 100644 index 0000000..2608a49 --- /dev/null +++ b/src/main/resources/assets/knockedback/lang/en_us.json @@ -0,0 +1,18 @@ +{ + "key.knockedback.carry": "Carry", + "key.knockedback.execute": "Execute", + "key.categories.knockedback": "Knockedback Controls", + "message.knockedback.cannot_carry_while_knocked": "You cannot carry others while you are knocked!", + "message.knockedback.cannot_execute_while_knocked": "You cannot execute others while you are knocked!", + "message.knockedback.picked_up": "Picked up %s", + "message.knockedback.being_carried": "You are being carried by %s", + "message.knockedback.dropped": "Dropped %s", + "message.knockedback.been_dropped": "You have been dropped", + "message.knockedback.execution_started": "Execution started...", + "message.knockedback.being_executed": "You're being executed!", + "message.knockedback.execution_interrupted": "Execution interrupted!", + "message.knockedback.execution_interrupted_executor": "Your execution was interrupted!", + "message.knockedback.you_executed": "You executed %s!", + "message.knockedback.you_were_executed": "You were executed by %s!", + "overlay.knockedback.recovery_time": "Time until recovery: %s s" +} \ No newline at end of file