From 57087a31f2620516a2df4f508e34e883637657b4 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Sun, 24 May 2026 11:06:37 +0200 Subject: [PATCH] fix(housekeeping): emit localizable error keys instead of bare slugs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every HK action handler returned bare error slugs (\"invalid_input\", \"user_offline\", \"no_active_ban\", \"target_unkickable\", \"ban_failed\", \"user_not_found\") in HousekeepingActionResultComposer.message. The client's `localizeOrPassthrough` only treats a value as a translation key when it contains a dot, so those bare slugs were rendered raw in the status banner and the toast — ugly and untranslatable. Re-prefix all error messages with `housekeeping.error.` so the EN + IT dictionaries can resolve them. Success path is unchanged (server sends empty string, client falls back to `housekeeping.action.success`). Companion dictionary entries land on the client side. --- .../incoming/housekeeping/HousekeepingBanUserEvent.java | 4 ++-- .../housekeeping/HousekeepingForceDisconnectUserEvent.java | 4 ++-- .../incoming/housekeeping/HousekeepingKickUserEvent.java | 6 +++--- .../incoming/housekeeping/HousekeepingMuteUserEvent.java | 4 ++-- .../incoming/housekeeping/HousekeepingUnbanUserEvent.java | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingBanUserEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingBanUserEvent.java index d8666f7b..4b2c1619 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingBanUserEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingBanUserEvent.java @@ -37,7 +37,7 @@ public class HousekeepingBanUserEvent extends MessageHandler { int hours = this.packet.readInt(); if (userId <= 0 || hours <= 0) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "invalid_input")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.invalid_input")); return; } @@ -48,7 +48,7 @@ public class HousekeepingBanUserEvent extends MessageHandler { .ban(userId, this.client.getHabbo(), reason != null ? reason : "", duration, ModToolBanType.ACCOUNT, 0); if (bans == null || bans.isEmpty()) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "ban_failed")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.ban_failed")); return; } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingForceDisconnectUserEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingForceDisconnectUserEvent.java index 5a5193c7..8e642ffa 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingForceDisconnectUserEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingForceDisconnectUserEvent.java @@ -29,14 +29,14 @@ public class HousekeepingForceDisconnectUserEvent extends MessageHandler { String reason = this.packet.readString(); if (userId <= 0) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "invalid_input")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.invalid_input")); return; } Habbo target = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId); if (target == null) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "user_offline")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.user_offline")); return; } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingKickUserEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingKickUserEvent.java index acc5d96c..57bc8341 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingKickUserEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingKickUserEvent.java @@ -31,19 +31,19 @@ public class HousekeepingKickUserEvent extends MessageHandler { String reason = this.packet.readString(); if (userId <= 0) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "invalid_input")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.invalid_input")); return; } Habbo target = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId); if (target == null) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "user_offline")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.user_offline")); return; } if (target.hasPermission(Permission.ACC_UNKICKABLE)) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "target_unkickable")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.target_unkickable")); return; } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingMuteUserEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingMuteUserEvent.java index ad6cba32..43f12eb1 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingMuteUserEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingMuteUserEvent.java @@ -33,14 +33,14 @@ public class HousekeepingMuteUserEvent extends MessageHandler { int minutes = this.packet.readInt(); if (userId <= 0 || minutes <= 0) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "invalid_input")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.invalid_input")); return; } Habbo target = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId); if (target == null) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "user_offline")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.user_offline")); return; } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingUnbanUserEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingUnbanUserEvent.java index e402a729..74ed38e4 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingUnbanUserEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingUnbanUserEvent.java @@ -23,14 +23,14 @@ public class HousekeepingUnbanUserEvent extends MessageHandler { int userId = this.packet.readInt(); if (userId <= 0) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "invalid_input")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.invalid_input")); return; } HabboInfo info = Emulator.getGameEnvironment().getHabboManager().getHabboInfo(userId); if (info == null) { - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "user_not_found")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "housekeeping.error.user_not_found")); return; } @@ -39,6 +39,6 @@ public class HousekeepingUnbanUserEvent extends MessageHandler { // on a never-banned user is a benign no-op that returns false. boolean cleared = Emulator.getGameEnvironment().getModToolManager().unban(info.getUsername()); - this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, cleared, cleared ? userId : 0, cleared ? "" : "no_active_ban")); + this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, cleared, cleared ? userId : 0, cleared ? "" : "housekeeping.error.no_active_ban")); } }