Added Translation support and configuration options

This commit is contained in:
IM23a-spirgif
2025-04-28 22:34:35 +02:00
parent a1ae2eebd5
commit 9455b6c442
8 changed files with 68 additions and 34 deletions
@@ -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<Player> 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
@@ -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()
));
}
@@ -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() + "!"));
}
}
@@ -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());
}
}
@@ -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;
@@ -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;