From b8f5299995405edcc380facb8e423842847effe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=9D=97=E5=90=9B?= Date: Wed, 4 May 2022 11:17:31 +0800 Subject: [PATCH] Optimize multilingualism (using variables) Optimize multilingualism (using variables) --- .../java/emu/grasscutter/Grasscutter.java | 2 +- src/main/java/emu/grasscutter/Language.java | 124 +++++++++--------- .../command/commands/AccountCommand.java | 2 +- .../command/commands/ClearCommand.java | 20 +-- .../command/commands/DropCommand.java | 2 +- .../command/commands/GiveArtifactCommand.java | 2 +- .../command/commands/GiveCharCommand.java | 2 +- .../command/commands/GiveCommand.java | 8 +- .../command/commands/GodModeCommand.java | 5 +- .../command/commands/KickCommand.java | 5 +- .../command/commands/KillAllCommand.java | 2 +- .../commands/KillCharacterCommand.java | 2 +- .../command/commands/ListCommand.java | 2 +- .../command/commands/PositionCommand.java | 3 +- .../command/commands/ResetConstCommand.java | 2 +- .../command/commands/SendMailCommand.java | 20 +-- .../commands/SetFetterLevelCommand.java | 2 +- .../command/commands/SetStatsCommand.java | 4 +- .../commands/SetWorldLevelCommand.java | 2 +- .../command/commands/SpawnCommand.java | 2 +- .../command/commands/TalentCommand.java | 16 +-- .../command/commands/TeleportCommand.java | 2 +- .../command/commands/WeatherCommand.java | 2 +- .../dispatch/DispatchHttpJsonHandler.java | 2 +- .../server/dispatch/DispatchServer.java | 20 ++- .../DefaultAuthenticationHandler.java | 10 +- .../grasscutter/server/game/GameServer.java | 2 +- .../grasscutter/server/game/GameSession.java | 4 +- 28 files changed, 129 insertions(+), 142 deletions(-) diff --git a/src/main/java/emu/grasscutter/Grasscutter.java b/src/main/java/emu/grasscutter/Grasscutter.java index b7aae11d1..5bfed1022 100644 --- a/src/main/java/emu/grasscutter/Grasscutter.java +++ b/src/main/java/emu/grasscutter/Grasscutter.java @@ -142,7 +142,7 @@ public final class Grasscutter { } public static void loadLanguage() { - try (FileReader file = new FileReader(String.format(getConfig().LANGUAGE_FOLDER + "%s.json", Grasscutter.config.Language))) { + try (FileReader file = new FileReader(String.format("%s%s.json", getConfig().LANGUAGE_FOLDER, Grasscutter.config.Language))) { language = gson.fromJson(file, Language.class); } catch (Exception e) { Grasscutter.language = new Language(); diff --git a/src/main/java/emu/grasscutter/Language.java b/src/main/java/emu/grasscutter/Language.java index bb765dc19..2ae9a30a9 100644 --- a/src/main/java/emu/grasscutter/Language.java +++ b/src/main/java/emu/grasscutter/Language.java @@ -11,28 +11,29 @@ public final class Language { public String Command_error = "Command error:"; public String Error = "An error occurred."; public String Grasscutter_is_free = "Grasscutter is FREE software. If you have paid for this, you may have been scammed. Homepage: https://github.com/Grasscutters/Grasscutter"; - public String Game_start_port = "Game Server started on port %s"; - public String Client_connect = "Client connected from %s"; - public String Client_disconnect = "Client disconnected from %s"; - public String Client_request = "[Dispatch] Client %s %s request: %s"; + public String Game_start_port = "Game Server started on port {port}"; + public String Client_connect = "Client connected from {address}"; + public String Client_disconnect = "Client disconnected from {address}"; + public String Client_request = "[Dispatch] Client {ip} {method} request: {url}"; public String Not_load_keystore = "[Dispatch] Unable to load keystore. Trying default keystore password..."; public String Use_default_keystore = "[Dispatch] The default keystore password was loaded successfully. Please consider setting the password to 123456 in config.json."; public String Load_keystore_error = "[Dispatch] Error while loading keystore!"; public String Not_find_ssl_cert = "[Dispatch] No SSL cert found! Falling back to HTTP server."; public String Welcome = "Welcome to Grasscutter"; - public String Potential_unhandled_request = "[Dispatch] Potential unhandled %s request: %s"; - public String Client_login_token = "[Dispatch] Client %s is trying to log in via token"; - public String Client_token_login_failed = "[Dispatch] Client %s failed to log in via token"; - public String Client_login_in_token = "[Dispatch] Client %s logged in via token as %s"; + public String Potential_unhandled_request = "[Dispatch] Potential unhandled {method} request: {url}"; + public String Client_try_login = "[Dispatch] Client {ip} is trying to log in"; + public String Client_login_token = "[Dispatch] Client {ip} is trying to log in via token"; + public String Client_token_login_failed = "[Dispatch] Client {ip} failed to log in via token"; + public String Client_login_in_token = "[Dispatch] Client {ip} logged in via token as {uid}"; public String Game_account_cache_error = "Game account cache information error"; public String Wrong_session_key = "Wrong session key."; - public String Client_exchange_combo_token = "[Dispatch] Client %s succeed to exchange combo token"; - public String Client_failed_exchange_combo_token = "[Dispatch] Client %s failed to exchange combo token"; - public String Dispatch_start_server_port = "[Dispatch] Dispatch server started on port %s"; - public String Client_failed_login_account_create = "[Dispatch] Client %s failed to log in: Account %s created"; - public String Client_failed_login_account_create_failed = "[Dispatch] Client %s failed to log in: Account create failed"; - public String Client_failed_login_account_no_found = "[Dispatch] Client %s failed to log in: Account no found"; - public String Client_login = "[Dispatch] Client %s logged in as %s"; + public String Client_exchange_combo_token = "[Dispatch] Client {ip} succeed to exchange combo token"; + public String Client_failed_exchange_combo_token = "[Dispatch] Client {ip} failed to exchange combo token"; + public String Dispatch_start_server_port = "[Dispatch] Dispatch server started on port {port}"; + public String Client_failed_login_account_create = "[Dispatch] Client {ip} failed to log in: Account {uid} created"; + public String Client_failed_login_account_create_failed = "[Dispatch] Client {ip} failed to log in: Account create failed"; + public String Client_failed_login_account_no_found = "[Dispatch] Client {ip} failed to log in: Account no found"; + public String Client_login = "[Dispatch] Client {ip} logged in as {uid}"; public String Username_not_found = "Username not found."; public String Username_not_found_create_failed = "Username not found, create failed."; @@ -65,7 +66,7 @@ public final class Language { public String Modify_user_account = "Modify user accounts"; public String Invalid_UID = "Invalid UID."; public String Account_exists = "Account already exists."; - public String Account_create_UID = "Account created with UID %s."; + public String Account_create_UID = "Account created with UID {uid}."; public String Account_delete = "Account deleted."; public String Account_not_find = "Account not found."; public String Account_command_usage = "Usage: account [uid]"; @@ -81,20 +82,20 @@ public final class Language { public String Change_screen_not_exist = "Scene does not exist"; // Clear - public String Clear_weapons = "Cleared weapons for %s ."; - public String Clear_artifacts = "Cleared artifacts for %s ."; - public String Clear_materials = "Cleared materials for %s ."; - public String Clear_furniture = "Cleared furniture for %s ."; - public String Clear_displays = "Cleared displays for %s ."; - public String Clear_virtuals = "Cleared virtuals for %s ."; - public String Clear_everything = "Cleared everything for %s ."; + public String Clear_weapons = "Cleared weapons for {name} ."; + public String Clear_artifacts = "Cleared artifacts for {name} ."; + public String Clear_materials = "Cleared materials for {name} ."; + public String Clear_furniture = "Cleared furniture for {name} ."; + public String Clear_displays = "Cleared displays for {name} ."; + public String Clear_virtuals = "Cleared virtuals for {name} ."; + public String Clear_everything = "Cleared everything for {name} ."; // Coop public String Coop_usage = "Usage: coop "; // Drop public String Drop_usage = "Usage: drop [amount]"; - public String Drop_dropped_of = "Dropped %s of %s."; + public String Drop_dropped_of = "Dropped {amount} of {item}."; // EnterDungeon public String EnterDungeon_usage = "Usage: enterdungeon "; @@ -111,11 +112,11 @@ public final class Language { // GiveArtifact public String GiveArtifact_usage = "Usage: giveart|gart [player] [[,]]... [level]"; public String GiveArtifact_invalid_artifact_id = "Invalid artifact ID."; - public String GiveArtifact_given = "Given %s to %s."; + public String GiveArtifact_given = "Given {itemId} to {target}."; // GiveChar public String GiveChar_usage = "Usage: givechar [amount]"; - public String GiveChar_given = "Given %s with level %s to %s."; + public String GiveChar_given = "Given {avatarId} with level {level} to {target}."; public String GiveChar_invalid_avatar_id = "Invalid avatar id."; public String GiveChar_invalid_avatar_level = "Invalid avatar level."; public String GiveChar_invalid_avatar_or_player_id = "Invalid avatar or player ID."; @@ -124,31 +125,31 @@ public final class Language { public String Give_usage = "Usage: give [amount] [level]"; public String Give_refinement_only_applicable_weapons = "Refinement is only applicable to weapons."; public String Give_refinement_must_between_1_and_5 = "Refinement must be between 1 and 5."; - public String Give_given = "Given %s of %s to %s."; - public String Give_given_with_level_and_refinement = "Given %s with level %s, refinement %s %s times to %s"; - public String Give_given_level = "Given %s with level %s %s times to %s"; + public String Give_given = "Given {amount} of {item} to {target}."; + public String Give_given_with_level_and_refinement = "Given {item} with level {lvl}, refinement {refinement} {amount} times to {target}"; + public String Give_given_level = "Given {item} with level {lvl} {amount} times to {target}"; // GodMode - public String Godmode_status = "Godmode is now %s for %s ."; + public String Godmode_status = "Godmode is now {status} for {name} ."; // Heal public String Heal_message = "All characters have been healed."; // Kick - public String Kick_player_kick_player = "Player [%s:%s] has kicked player [%s:%s]"; - public String Kick_server_player = "Kicking player [%s:%s]"; + public String Kick_player_kick_player = "Player [{sendUid}:{sendName}] has kicked player [{kickUid}:{kickName}]"; + public String Kick_server_player = "Kicking player [{kickUid}:{kickName}]"; // Kill public String Kill_usage = "Usage: killall [playerUid] [sceneId]"; public String Kill_scene_not_found_in_player_world = "Scene not found in player world"; - public String Kill_kill_monsters_in_scene = "Killing %s monsters in scene %s"; + public String Kill_kill_monsters_in_scene = "Killing {size} monsters in scene {id}"; // KillCharacter public String KillCharacter_usage = "Usage: /killcharacter [playerId]"; - public String KillCharacter_kill_current_character = "Killed %s current character."; + public String KillCharacter_kill_current_character = "Killed {name} current character."; // List - public String List_message = "There are %s player(s) online:"; + public String List_message = "There are {size} player(s) online:"; // Permission public String Permission_usage = "Usage: permission "; @@ -158,7 +159,7 @@ public final class Language { public String Permission_not_have_permission = "They don't have this permission!"; // Position - public String Position_message = "Coord: %.3f, %.3f, %.3f\nScene id: %d"; + public String Position_message = "Coord: {x}, {y}, {z}\nScene id: {id}"; // Reload public String Reload_reload_start = "Reloading config."; @@ -166,32 +167,32 @@ public final class Language { // ResetConst public String ResetConst_reset_all = "Reset all avatars' constellations."; - public String ResetConst_reset_all_done = "Constellations for %s have been reset. Please relog to see changes."; + public String ResetConst_reset_all_done = "Constellations for {name} have been reset. Please relog to see changes."; // ResetShopLimit public String ResetShopLimit_usage = "Usage: /resetshop "; // SendMail public String SendMail_usage = "Usage: give [player] [amount]"; - public String SendMail_user_not_exist = "The user with an id of '%s' does not exist"; + public String SendMail_user_not_exist = "The user with an id of '{id}' does not exist"; public String SendMail_start_composition = "Starting composition of message.\nPlease use `/sendmail ` to continue.\nYou can use `/sendmail stop` at any time"; public String SendMail_templates = "Mail templates coming soon implemented..."; public String SendMail_invalid_arguments = "Invalid arguments.\nUsage `/sendmail <userId|all|help> [templateId]`"; public String SendMail_send_cancel = "Message sending cancelled"; - public String SendMail_send_done = "Message sent to user %s!"; + public String SendMail_send_done = "Message sent to user {name}!"; public String SendMail_send_all_done = "Message sent to all users!"; - public String SendMail_not_composition_end = "Message composition not at final stage.\nPlease use `/sendmail %s` or `/sendmail stop` to cancel"; - public String SendMail_Please_use = "Please use `/sendmail %s`"; - public String SendMail_set_title = "Message title set as '%s'.\nUse '/sendmail <content>' to continue."; - public String SendMail_set_contents = "Message contents set as '%s'.\nUse '/sendmail <sender>' to continue."; - public String SendMail_set_message_sender = "Message sender set as '%s'.\nUse '/sendmail <itemId|itemName|finish> [amount] [level]' to continue."; - public String SendMail_send = "Attached %s of %s (level %s) to the message.\nContinue adding more items or use `/sendmail finish` to send the message."; - public String SendMail_invalid_arguments_please_use = "Invalid arguments \n Please use `/sendmail %s`"; + public String SendMail_not_composition_end = "Message composition not at final stage.\nPlease use `/sendmail {args}` or `/sendmail stop` to cancel"; + public String SendMail_please_use = "Please use `/sendmail {args}`"; + public String SendMail_set_title = "Message title set as '{title}'.\nUse '/sendmail <content>' to continue."; + public String SendMail_set_contents = "Message contents set as '{contents}'.\nUse '/sendmail <sender>' to continue."; + public String SendMail_set_message_sender = "Message sender set as '{send}'.\nUse '/sendmail <itemId|itemName|finish> [amount] [level]' to continue."; + public String SendMail_send = "Attached {amount} of {item} (level {lvl}) to the message.\nContinue adding more items or use `/sendmail finish` to send the message."; + public String SendMail_invalid_arguments_please_use = "Invalid arguments \n Please use `/sendmail {args}`"; public String SendMail_title = "<title>"; public String SendMail_message = "<message>"; public String SendMail_sender = "<sender>"; public String SendMail_arguments = "<itemId|itemName|finish> [amount] [level]"; - public String SendMail_error = "ERROR: invalid construction stage %s. Check console for stacktrace."; + public String SendMail_error = "ERROR: invalid construction stage {stage}. Check console for stacktrace."; // SendMessage public String SendMessage_usage = "Usage: sendmessage <player> <message>"; @@ -200,7 +201,7 @@ public final class Language { // SetFetterLevel public String SetFetterLevel_usage = "Usage: setfetterlevel <level>"; public String SetFetterLevel_fetter_level_must_between_0_and_10 = "Fetter level must be between 0 and 10."; - public String SetFetterLevel_fetter_set_level = "Fetter level set to %s"; + public String SetFetterLevel_fetter_set_level = "Fetter level set to {level}"; public String SetFetterLevel_invalid_fetter_level = "Invalid fetter level."; // SetStats @@ -214,9 +215,8 @@ public final class Language { public String SetStats_value_error = "Invalid stat value."; public String SetStats_uid_error = "Invalid UID."; public String SetStats_player_error = "Player not found or offline."; - public String SetStats_set_self = "%s set to %s."; - public String SetStats_set_for_uid = "%s for %s set to %s."; - public String SetStats_set_max_hp = "MAX HP set to %s."; + public String SetStats_set_self = "{name} set to {value}."; + public String SetStats_set_for_uid = "{name} for {uid} set to {value}."; public String Stats_FIGHT_PROP_MAX_HP = "Max HP"; public String Stats_FIGHT_PROP_CUR_HP = "Current HP"; public String Stats_FIGHT_PROP_CUR_ATTACK = "ATK"; @@ -253,12 +253,12 @@ public final class Language { // SetWorldLevel public String SetWorldLevel_usage = "Usage: setworldlevel <level>"; public String SetWorldLevel_world_level_must_between_0_and_8 = "World level must be between 0-8"; - public String SetWorldLevel_set_world_level = "World level set to %s."; + public String SetWorldLevel_set_world_level = "World level set to {level}."; public String SetWorldLevel_invalid_world_level = "Invalid world level."; // Spawn public String Spawn_usage = "Usage: spawn <entityId> [amount] [level(monster only)]"; - public String Spawn_message = "Spawned %s of %s."; + public String Spawn_message = "Spawned {amount} of {id}."; // Stop public String Stop_message = "Server shutting down..."; @@ -268,15 +268,15 @@ public final class Language { public String Talent_usage_2 = "Another way to set talent level: /talent <n or e or q> <value>"; public String Talent_usage_3 = "To get talent ID: /talent getid"; public String Talent_lower_16 = "Invalid talent level. Level should be lower than 16"; - public String Talent_set_atk = "Set talent Normal ATK to %s."; - public String Talent_set_e = "Set talent E to %s."; - public String Talent_set_q = "Set talent Q to %s."; + public String Talent_set_atk = "Set talent Normal ATK to {level}."; + public String Talent_set_e = "Set talent E to {level}."; + public String Talent_set_q = "Set talent Q to {level}."; public String Talent_invalid_skill_id = "Invalid skill ID."; - public String Talent_set_this = "Set this talent to %s."; + public String Talent_set_this = "Set this talent to {level}."; public String Talent_invalid_talent_level = "Invalid talent level."; - public String Talent_normal_attack_id = "Normal Attack ID %s."; - public String Talent_e_skill_id = "E skill ID %s."; - public String Talent_q_skill_id = "Q skill ID %s."; + public String Talent_normal_attack_id = "Normal Attack ID {id}."; + public String Talent_e_skill_id = "E skill ID {id}."; + public String Talent_q_skill_id = "Q skill ID {id}."; // TeleportAll public String TeleportAll_message = "You only can use this command in MP mode."; @@ -286,10 +286,10 @@ public final class Language { public String Teleport_usage = "Usage: /tp [@<player id>] <x> <y> <z> [scene id]"; public String Teleport_specify_player_id = "You must specify a player id."; public String Teleport_invalid_position = "Invalid position."; - public String Teleport_message = "Teleported %s to %s,%s,%s in scene %s"; + public String Teleport_message = "Teleported {name} to {x},{y},{z} in scene {id}"; // Weather public String Weather_usage = "Usage: weather <weatherId> [climateId]"; - public String Weather_message = "Changed weather to %s with climate %s"; + public String Weather_message = "Changed weather to {weatherId} with climate {climateId}"; public String Weather_invalid_id = "Invalid ID."; } diff --git a/src/main/java/emu/grasscutter/command/commands/AccountCommand.java b/src/main/java/emu/grasscutter/command/commands/AccountCommand.java index df7e58a37..bfe0d0a66 100644 --- a/src/main/java/emu/grasscutter/command/commands/AccountCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/AccountCommand.java @@ -49,7 +49,7 @@ public final class AccountCommand implements CommandHandler { account.addPermission("*"); account.save(); // Save account to database. - CommandHandler.sendMessage(null, String.format(Grasscutter.getLanguage().Account_create_UID, account.getPlayerUid())); + CommandHandler.sendMessage(null, Grasscutter.getLanguage().Account_create_UID.replace("{uid}", Integer.toString(account.getPlayerUid()))); } return; case "delete": diff --git a/src/main/java/emu/grasscutter/command/commands/ClearCommand.java b/src/main/java/emu/grasscutter/command/commands/ClearCommand.java index ed943c082..20f1bfb18 100644 --- a/src/main/java/emu/grasscutter/command/commands/ClearCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/ClearCommand.java @@ -39,7 +39,7 @@ public final class ClearCommand implements CommandHandler { .filter(item -> item.getItemType() == ItemType.ITEM_WEAPON) .filter(item -> !item.isLocked() && !item.isEquipped()) .forEach(item -> playerInventory.removeItem(item, item.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_weapons, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_weapons.replace("{name}", targetPlayer.getNickname())); } case "art" -> { playerInventory.getItems().values().stream() @@ -47,7 +47,7 @@ public final class ClearCommand implements CommandHandler { .filter(item -> item.getLevel() == 1 && item.getExp() == 0) .filter(item -> !item.isLocked() && !item.isEquipped()) .forEach(item -> playerInventory.removeItem(item, item.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_artifacts, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_artifacts.replace("{name}", targetPlayer.getNickname())); } case "mat" -> { playerInventory.getItems().values().stream() @@ -55,7 +55,7 @@ public final class ClearCommand implements CommandHandler { .filter(item -> item.getLevel() == 1 && item.getExp() == 0) .filter(item -> !item.isLocked() && !item.isEquipped()) .forEach(item -> playerInventory.removeItem(item, item.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_artifacts, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_artifacts.replace("{name}", targetPlayer.getNickname())); } case "all" -> { playerInventory.getItems().values().stream() @@ -63,34 +63,34 @@ public final class ClearCommand implements CommandHandler { .filter(item1 -> item1.getLevel() == 1 && item1.getExp() == 0) .filter(item1 -> !item1.isLocked() && !item1.isEquipped()) .forEach(item1 -> playerInventory.removeItem(item1, item1.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_artifacts, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_artifacts.replace("{name}", targetPlayer.getNickname())); playerInventory.getItems().values().stream() .filter(item2 -> item2.getItemType() == ItemType.ITEM_MATERIAL) .filter(item2 -> !item2.isLocked() && !item2.isEquipped()) .forEach(item2 -> playerInventory.removeItem(item2, item2.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_materials, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_artifacts.replace("{name}", targetPlayer.getNickname())); playerInventory.getItems().values().stream() .filter(item3 -> item3.getItemType() == ItemType.ITEM_WEAPON) .filter(item3 -> item3.getLevel() == 1 && item3.getExp() == 0) .filter(item3 -> !item3.isLocked() && !item3.isEquipped()) .forEach(item3 -> playerInventory.removeItem(item3, item3.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_artifacts, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_artifacts.replace("{name}", targetPlayer.getNickname())); playerInventory.getItems().values().stream() .filter(item4 -> item4.getItemType() == ItemType.ITEM_FURNITURE) .filter(item4 -> !item4.isLocked() && !item4.isEquipped()) .forEach(item4 -> playerInventory.removeItem(item4, item4.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_furniture, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_furniture.replace("{name}", targetPlayer.getNickname())); playerInventory.getItems().values().stream() .filter(item5 -> item5.getItemType() == ItemType.ITEM_DISPLAY) .filter(item5 -> !item5.isLocked() && !item5.isEquipped()) .forEach(item5 -> playerInventory.removeItem(item5, item5.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_displays, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_displays.replace("{name}", targetPlayer.getNickname())); playerInventory.getItems().values().stream() .filter(item6 -> item6.getItemType() == ItemType.ITEM_VIRTUAL) .filter(item6 -> !item6.isLocked() && !item6.isEquipped()) .forEach(item6 -> playerInventory.removeItem(item6, item6.getCount())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_virtuals, targetPlayer.getNickname())); - sender.dropMessage(String.format(Grasscutter.getLanguage().Clear_everything, targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_virtuals.replace("{name}", targetPlayer.getNickname())); + sender.dropMessage(Grasscutter.getLanguage().Clear_everything.replace("{name}", targetPlayer.getNickname())); } } } catch (NumberFormatException ignored) { diff --git a/src/main/java/emu/grasscutter/command/commands/DropCommand.java b/src/main/java/emu/grasscutter/command/commands/DropCommand.java index 5bf068c38..2e675824a 100644 --- a/src/main/java/emu/grasscutter/command/commands/DropCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/DropCommand.java @@ -49,7 +49,7 @@ public final class DropCommand implements CommandHandler { EntityItem entity = new EntityItem(sender.getScene(), sender, itemData, sender.getPos().clone().addY(3f), amount); sender.getScene().addEntity(entity); } - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Drop_dropped_of, amount, item)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Drop_dropped_of.replace("{amount}", Integer.toString(amount)).replace("{item}", Integer.toString(item))); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_or_player_id); } diff --git a/src/main/java/emu/grasscutter/command/commands/GiveArtifactCommand.java b/src/main/java/emu/grasscutter/command/commands/GiveArtifactCommand.java index eae2bcea8..c347f80cf 100644 --- a/src/main/java/emu/grasscutter/command/commands/GiveArtifactCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/GiveArtifactCommand.java @@ -91,7 +91,7 @@ public final class GiveArtifactCommand implements CommandHandler { item.getAppendPropIdList().addAll(appendPropIdList); targetPlayer.getInventory().addItem(item, ActionReason.SubfieldDrop); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().GiveArtifact_given, itemId, target)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().GiveArtifact_given.replace("{itemId}", Integer.toString(itemId)).replace("target", Integer.toString(target))); } } diff --git a/src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java b/src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java index 3b03e589d..ac53a7202 100644 --- a/src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java @@ -94,6 +94,6 @@ public final class GiveCharCommand implements CommandHandler { avatar.recalcStats(); targetPlayer.addAvatar(avatar); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().GiveChar_given, avatarId, level, target)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().GiveChar_given.replace("{avatarId}", Integer.toString(avatarId)).replace("{level}", Integer.toString(level)).replace("{target}", Integer.toString(target))); } } diff --git a/src/main/java/emu/grasscutter/command/commands/GiveCommand.java b/src/main/java/emu/grasscutter/command/commands/GiveCommand.java index 201ec63a4..630183d9b 100644 --- a/src/main/java/emu/grasscutter/command/commands/GiveCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/GiveCommand.java @@ -148,13 +148,11 @@ public final class GiveCommand implements CommandHandler { this.item(targetPlayer, itemData, amount, lvl, refinement); if (!itemData.isEquip()) { - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Give_given, amount, item, target)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_given.replace("{amount}", Integer.toString(amount)).replace("{item}", Integer.toString(item)).replace("{target}", Integer.toString(target))); } else if (itemData.getItemType() == ItemType.ITEM_WEAPON) { - CommandHandler.sendMessage(sender, - String.format(Grasscutter.getLanguage().Give_given_with_level_and_refinement, item, lvl, refinement, amount, target)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_given_with_level_and_refinement.replace("{item}", Integer.toString(item)).replace("{lvl}", Integer.toString(lvl)).replace("{refinement}", Integer.toString(refinement)).replace("{amount}", Integer.toString(amount)).replace("{target}", Integer.toString(target))); } else { - CommandHandler.sendMessage(sender, - String.format(Grasscutter.getLanguage().Give_given_level, item, lvl, amount, target)); + CommandHandler.sendMessage(sender,Grasscutter.getLanguage().Give_given_level.replace("{item}", Integer.toString(item)).replace("{lvl}", Integer.toString(lvl)).replace("{amount}", Integer.toString(amount))); } } diff --git a/src/main/java/emu/grasscutter/command/commands/GodModeCommand.java b/src/main/java/emu/grasscutter/command/commands/GodModeCommand.java index 032dfd78a..513d59fc5 100644 --- a/src/main/java/emu/grasscutter/command/commands/GodModeCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/GodModeCommand.java @@ -39,9 +39,6 @@ public final class GodModeCommand implements CommandHandler { } targetPlayer.setGodmode(!targetPlayer.inGodmode()); - sender.dropMessage(String.format(Grasscutter.getLanguage().Godmode_status, - (targetPlayer.inGodmode() ? Grasscutter.getLanguage().Enabled : Grasscutter.getLanguage().Disabled), - targetPlayer.getNickname() - )); + sender.dropMessage(Grasscutter.getLanguage().Godmode_status.replace("{status}", (targetPlayer.inGodmode() ? Grasscutter.getLanguage().Enabled : Grasscutter.getLanguage().Disabled)).replace("{name}", targetPlayer.getNickname())); } } diff --git a/src/main/java/emu/grasscutter/command/commands/KickCommand.java b/src/main/java/emu/grasscutter/command/commands/KickCommand.java index cd41892f0..39aad62be 100644 --- a/src/main/java/emu/grasscutter/command/commands/KickCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/KickCommand.java @@ -22,9 +22,10 @@ public final class KickCommand implements CommandHandler { } if (sender != null) { - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Kick_player_kick_player, sender.getAccount().getPlayerUid(), sender.getAccount().getUsername(), target, targetPlayer.getAccount().getUsername())); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Kick_player_kick_player.replace("{sendUid}", Integer.toString(sender.getAccount().getPlayerUid())).replace("{sendName}", sender.getAccount().getUsername()).replace("kickUid", Integer.toString(target)).replace("{kickName}", targetPlayer.getAccount().getUsername())); + } else { + CommandHandler.sendMessage(null, Grasscutter.getLanguage().Kick_server_player.replace("{kickUid}", Integer.toString(target)).replace("{kickName}", targetPlayer.getAccount().getUsername())); } - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Kick_server_player, target, targetPlayer.getAccount().getUsername())); targetPlayer.getSession().close(); } diff --git a/src/main/java/emu/grasscutter/command/commands/KillAllCommand.java b/src/main/java/emu/grasscutter/command/commands/KillAllCommand.java index 1c6babb12..4a42f94ae 100644 --- a/src/main/java/emu/grasscutter/command/commands/KillAllCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/KillAllCommand.java @@ -59,7 +59,7 @@ public final class KillAllCommand implements CommandHandler { .filter(entity -> entity instanceof EntityMonster) .toList(); toKill.stream().forEach(entity -> mainScene.killEntity(entity, 0)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Kill_kill_monsters_in_scene, toKill.size(), mainScene.getId())); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Kill_kill_monsters_in_scene.replace("{size}", Integer.toString(toKill.size())).replace("{id}", Integer.toString(mainScene.getId()))); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_arguments); } diff --git a/src/main/java/emu/grasscutter/command/commands/KillCharacterCommand.java b/src/main/java/emu/grasscutter/command/commands/KillCharacterCommand.java index e7444fb58..dcc598465 100644 --- a/src/main/java/emu/grasscutter/command/commands/KillCharacterCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/KillCharacterCommand.java @@ -63,6 +63,6 @@ public final class KillCharacterCommand implements CommandHandler { targetPlayer.getScene().removeEntity(entity); entity.onDeath(0); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().KillCharacter_kill_current_character, targetPlayer.getNickname())); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().KillCharacter_kill_current_character.replace("{name}", targetPlayer.getNickname())); } } diff --git a/src/main/java/emu/grasscutter/command/commands/ListCommand.java b/src/main/java/emu/grasscutter/command/commands/ListCommand.java index 24ef96b55..0adfd815c 100644 --- a/src/main/java/emu/grasscutter/command/commands/ListCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/ListCommand.java @@ -21,7 +21,7 @@ public final class ListCommand implements CommandHandler { needUID = args.get(0).equals("uid"); } - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().List_message, playersMap.size())); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().List_message.replace("{size}", Integer.toString(playersMap.size()))); if (playersMap.size() != 0) { StringBuilder playerSet = new StringBuilder(); diff --git a/src/main/java/emu/grasscutter/command/commands/PositionCommand.java b/src/main/java/emu/grasscutter/command/commands/PositionCommand.java index f108fbce6..737bc6752 100644 --- a/src/main/java/emu/grasscutter/command/commands/PositionCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/PositionCommand.java @@ -18,7 +18,6 @@ public final class PositionCommand implements CommandHandler { return; } - sender.dropMessage(String.format(Grasscutter.getLanguage().Position_message, - sender.getPos().getX(), sender.getPos().getY(), sender.getPos().getZ(), sender.getSceneId())); + sender.dropMessage(Grasscutter.getLanguage().Position_message.replace("{x}", Float.toString(sender.getPos().getX())).replace("{y}", Float.toString(sender.getPos().getY())).replace("{z}", Float.toString(sender.getPos().getZ())).replace("{id}", Integer.toString(sender.getSceneId()))); } } diff --git a/src/main/java/emu/grasscutter/command/commands/ResetConstCommand.java b/src/main/java/emu/grasscutter/command/commands/ResetConstCommand.java index a9400bc33..627f5e103 100644 --- a/src/main/java/emu/grasscutter/command/commands/ResetConstCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/ResetConstCommand.java @@ -33,7 +33,7 @@ public final class ResetConstCommand implements CommandHandler { Avatar avatar = entity.getAvatar(); this.resetConstellation(avatar); - sender.dropMessage(String.format(Grasscutter.getLanguage().ResetConst_reset_all_done, avatar.getAvatarData().getName())); + sender.dropMessage(Grasscutter.getLanguage().ResetConst_reset_all_done.replace("{name}", avatar.getAvatarData().getName())); } } diff --git a/src/main/java/emu/grasscutter/command/commands/SendMailCommand.java b/src/main/java/emu/grasscutter/command/commands/SendMailCommand.java index 59e2d02e5..0e0788ae0 100644 --- a/src/main/java/emu/grasscutter/command/commands/SendMailCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/SendMailCommand.java @@ -45,7 +45,7 @@ public final class SendMailCommand implements CommandHandler { if (DatabaseHelper.getPlayerById(Integer.parseInt(args.get(0))) != null) { mailBuilder = new MailBuilder(Integer.parseInt(args.get(0)), new Mail()); } else { - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_user_not_exist, args.get(0))); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_user_not_exist.replace("{id}", args.get(0))); return; } } @@ -70,7 +70,7 @@ public final class SendMailCommand implements CommandHandler { if (mailBuilder.constructionStage == 3) { if (!mailBuilder.sendToAll) { Grasscutter.getGameServer().getPlayerByUid(mailBuilder.recipient, true).sendMail(mailBuilder.mail); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_send_done, mailBuilder.recipient)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_send_done.replace("{name}", Integer.toString(mailBuilder.recipient))); } else { for (Player player : DatabaseHelper.getAllPlayers()) { Grasscutter.getGameServer().getPlayerByUid(player.getUid(), true).sendMail(mailBuilder.mail); @@ -79,12 +79,12 @@ public final class SendMailCommand implements CommandHandler { } mailBeingConstructed.remove(senderId); } else { - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_not_composition_end, getConstructionArgs(mailBuilder.constructionStage))); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_not_composition_end.replace("{args}", getConstructionArgs(mailBuilder.constructionStage))); } return; } case "help" -> { - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_Please_use, getConstructionArgs(mailBuilder.constructionStage))); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_please_use.replace("{args}", getConstructionArgs(mailBuilder.constructionStage))); return; } default -> { @@ -92,19 +92,19 @@ public final class SendMailCommand implements CommandHandler { case 0 -> { String title = String.join(" ", args.subList(0, args.size())); mailBuilder.mail.mailContent.title = title; - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_set_title, title)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_set_title.replace("{title}", title)); mailBuilder.constructionStage++; } case 1 -> { String contents = String.join(" ", args.subList(0, args.size())); mailBuilder.mail.mailContent.content = contents; - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_set_contents, contents)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_set_contents.replace("{contents}", contents)); mailBuilder.constructionStage++; } case 2 -> { String msgSender = String.join(" ", args.subList(0, args.size())); mailBuilder.mail.mailContent.sender = msgSender; - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_set_message_sender, msgSender)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_set_message_sender.replace("{send}", msgSender)); mailBuilder.constructionStage++; } case 3 -> { @@ -144,13 +144,13 @@ public final class SendMailCommand implements CommandHandler { } } mailBuilder.mail.itemList.add(new Mail.MailItem(item, amount, lvl)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_send, amount, item, lvl)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_send.replace("{amount}", Integer.toString(amount)).replace("{item}", Integer.toString(item)).replace("{lvl}", Integer.toString(lvl))); } } } } } else { - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SendMail_invalid_arguments_please_use, getConstructionArgs(mailBuilder.constructionStage))); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SendMail_invalid_arguments_please_use.replace("{args}", getConstructionArgs(mailBuilder.constructionStage))); } } } @@ -172,7 +172,7 @@ public final class SendMailCommand implements CommandHandler { } default -> { Thread.dumpStack(); - return String.format(Grasscutter.getLanguage().SendMail_error, stage); + return Grasscutter.getLanguage().SendMail_error.replace("{stage}", Integer.toString(stage)); } } } diff --git a/src/main/java/emu/grasscutter/command/commands/SetFetterLevelCommand.java b/src/main/java/emu/grasscutter/command/commands/SetFetterLevelCommand.java index a8789b294..fc9a4e993 100644 --- a/src/main/java/emu/grasscutter/command/commands/SetFetterLevelCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/SetFetterLevelCommand.java @@ -42,7 +42,7 @@ public final class SetFetterLevelCommand implements CommandHandler { avatar.save(); sender.sendPacket(new PacketAvatarFetterDataNotify(avatar)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().SetFetterLevel_fetter_set_level, fetterLevel)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SetFetterLevel_fetter_set_level.replace("{level}", Integer.toString(fetterLevel))); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().SetFetterLevel_invalid_fetter_level); } diff --git a/src/main/java/emu/grasscutter/command/commands/SetStatsCommand.java b/src/main/java/emu/grasscutter/command/commands/SetStatsCommand.java index 376e12589..1d75b76e7 100644 --- a/src/main/java/emu/grasscutter/command/commands/SetStatsCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/SetStatsCommand.java @@ -246,9 +246,9 @@ public final class SetStatsCommand implements CommandHandler { valueStr = String.format("%.0f", value); } if (targetPlayer == sender) { - CommandHandler.sendMessage(sender, String.format(lang.SetStats_set_self, stat.name, valueStr)); + CommandHandler.sendMessage(sender, lang.SetStats_set_self.replace("{name}", stat.name).replace("{value}", valueStr)); } else { - CommandHandler.sendMessage(sender, String.format(lang.SetStats_set_for_uid, stat.name, uidStr, valueStr)); + CommandHandler.sendMessage(sender, lang.SetStats_set_for_uid.replace("{name}", stat.name).replace("{uid}", uidStr).replace("{value}", valueStr)); } return; } else { diff --git a/src/main/java/emu/grasscutter/command/commands/SetWorldLevelCommand.java b/src/main/java/emu/grasscutter/command/commands/SetWorldLevelCommand.java index 6ed5cc2a4..5d77c94ac 100644 --- a/src/main/java/emu/grasscutter/command/commands/SetWorldLevelCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/SetWorldLevelCommand.java @@ -35,7 +35,7 @@ public final class SetWorldLevelCommand implements CommandHandler { sender.getWorld().setWorldLevel(level); sender.setWorldLevel(level); - sender.dropMessage(String.format(Grasscutter.getLanguage().SetWorldLevel_set_world_level, level)); + sender.dropMessage(Grasscutter.getLanguage().SetWorldLevel_set_world_level.replace("{level}", Integer.toString(level))); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(null, Grasscutter.getLanguage().SetWorldLevel_invalid_world_level); } diff --git a/src/main/java/emu/grasscutter/command/commands/SpawnCommand.java b/src/main/java/emu/grasscutter/command/commands/SpawnCommand.java index a37e066b3..3c045f086 100644 --- a/src/main/java/emu/grasscutter/command/commands/SpawnCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/SpawnCommand.java @@ -79,7 +79,7 @@ public final class SpawnCommand implements CommandHandler { sender.getScene().addEntity(entity); } - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Spawn_message, amount, id)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Spawn_message.replace("{amount}", Integer.toString(amount)).replace("{id}", Integer.toString(id))); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_entity_id); } diff --git a/src/main/java/emu/grasscutter/command/commands/TalentCommand.java b/src/main/java/emu/grasscutter/command/commands/TalentCommand.java index 188b29e30..41774b6ec 100644 --- a/src/main/java/emu/grasscutter/command/commands/TalentCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/TalentCommand.java @@ -66,7 +66,7 @@ public final class TalentCommand implements CommandHandler { // Packet sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillIdNorAtk, currentLevelNorAtk, nextLevel)); sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillIdNorAtk, currentLevelNorAtk, nextLevel)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Talent_set_atk, nextLevel)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_atk.replace("{level}", Integer.toString(nextLevel))); } if (skillId == skillIdE){ // Upgrade skill @@ -76,7 +76,7 @@ public final class TalentCommand implements CommandHandler { // Packet sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillIdE, currentLevelE, nextLevel)); sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillIdE, currentLevelE, nextLevel)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Talent_set_e, nextLevel)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_e.replace("{level}", Integer.toString(nextLevel))); } if (skillId == skillIdQ){ // Upgrade skill @@ -86,7 +86,7 @@ public final class TalentCommand implements CommandHandler { // Packet sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillIdQ, currentLevelQ, nextLevel)); sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillIdQ, currentLevelQ, nextLevel)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Talent_set_q, nextLevel)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_q.replace("{level}", Integer.toString(nextLevel))); } } catch (NumberFormatException ignored) { @@ -128,7 +128,7 @@ public final class TalentCommand implements CommandHandler { // Packet sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillId, currentLevel, nextLevel)); sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillId, currentLevel, nextLevel)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Talent_set_this, nextLevel)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_this.replace("{level}", Integer.toString(nextLevel))); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_invalid_talent_level); return; @@ -140,10 +140,10 @@ public final class TalentCommand implements CommandHandler { int skillIdNorAtk = avatar.getData().getSkillDepot().getSkills().get(0); int skillIdE = avatar.getData().getSkillDepot().getSkills().get(1); int skillIdQ = avatar.getData().getSkillDepot().getEnergySkill(); - - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Talent_normal_attack_id, skillIdNorAtk)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Talent_e_skill_id, skillIdE)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Talent_q_skill_id, skillIdQ)); + + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_normal_attack_id.replace("{id}", Integer.toString(skillIdNorAtk))); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_e_skill_id.replace("{id}", Integer.toString(skillIdE))); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_q_skill_id.replace("{id}", Integer.toString(skillIdQ))); break; } } diff --git a/src/main/java/emu/grasscutter/command/commands/TeleportCommand.java b/src/main/java/emu/grasscutter/command/commands/TeleportCommand.java index b5c7ac2e6..430cfcdd4 100644 --- a/src/main/java/emu/grasscutter/command/commands/TeleportCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/TeleportCommand.java @@ -82,7 +82,7 @@ public final class TeleportCommand implements CommandHandler { if (!result) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Teleport_invalid_position); } else { - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Teleport_message, targetPlayer.getNickname(), x, y, z, sceneId)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Teleport_message.replace("{name}", targetPlayer.getNickname()).replace("{x}", Float.toString(x)).replace("{y}", Float.toString(y)).replace("{z}", Float.toString(z)).replace("{id}", Integer.toString(sceneId))); } } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Teleport_invalid_position); diff --git a/src/main/java/emu/grasscutter/command/commands/WeatherCommand.java b/src/main/java/emu/grasscutter/command/commands/WeatherCommand.java index c8efe45a1..2e590a387 100644 --- a/src/main/java/emu/grasscutter/command/commands/WeatherCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/WeatherCommand.java @@ -34,7 +34,7 @@ public final class WeatherCommand implements CommandHandler { sender.getScene().setWeather(weatherId); sender.getScene().setClimate(climate); sender.getScene().broadcastPacket(new PacketSceneAreaWeatherNotify(sender)); - CommandHandler.sendMessage(sender, String.format(Grasscutter.getLanguage().Weather_message, weatherId, climateId)); + CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Weather_message.replace("{weatherId}", Integer.toString(weatherId)).replace("{climateId}", Integer.toString(climateId))); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Weather_invalid_id); } diff --git a/src/main/java/emu/grasscutter/server/dispatch/DispatchHttpJsonHandler.java b/src/main/java/emu/grasscutter/server/dispatch/DispatchHttpJsonHandler.java index 9c938bfc3..e1a07b412 100644 --- a/src/main/java/emu/grasscutter/server/dispatch/DispatchHttpJsonHandler.java +++ b/src/main/java/emu/grasscutter/server/dispatch/DispatchHttpJsonHandler.java @@ -32,7 +32,7 @@ public final class DispatchHttpJsonHandler implements HttpContextHandler { public void handle(Request req, Response res) throws IOException { // Checking for ALL here isn't required as when ALL is enabled enableDevLogging() gets enabled if(Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING && Arrays.stream(missingRoutes).anyMatch(x -> x == req.baseUrl())) { - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Client_request, req.ip(), req.method(), req.baseUrl()) + (Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING ? "(MISSING)" : "")); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_request.replace("{ip}", req.ip()).replace("{method}", req.method()).replace("{url}", req.baseUrl()) + (Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING ? "(MISSING)" : "")); } res.send(response); } diff --git a/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java b/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java index 29b8535c1..196faf880 100644 --- a/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java +++ b/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java @@ -249,7 +249,7 @@ public final class DispatchServer { httpServer.raw().error(404, ctx -> { if(Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING) { - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Potential_unhandled_request, ctx.method(), ctx.url())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Potential_unhandled_request.replace("{method}", ctx.method()).replace("{url}", ctx.url())); } ctx.contentType("text/html"); ctx.result("<!doctype html><html lang=\"en\"><body><img src=\"https://http.cat/404\" /></body></html>"); // I'm like 70% sure this won't break anything. @@ -307,7 +307,7 @@ public final class DispatchServer { if (requestData == null) { return; } - Grasscutter.getLogger().info(String.format("[Dispatch] Client %s is trying to log in", req.ip())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_try_login.replace("{ip}", req.ip())); res.send(this.getAuthHandler().handleGameLogin(req, requestData)); }); @@ -327,7 +327,7 @@ public final class DispatchServer { return; } LoginResultJson responseData = new LoginResultJson(); - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Client_login_token, req.ip())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_login_token.replace("{ip}", req.ip())); // Login Account account = DatabaseHelper.getAccountById(requestData.uid); @@ -337,16 +337,14 @@ public final class DispatchServer { responseData.retcode = -111; responseData.message = Grasscutter.getLanguage().Game_account_cache_error; - Grasscutter.getLogger() - .info(String.format(Grasscutter.getLanguage().Client_token_login_failed, req.ip())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_token_login_failed.replace("{ip}", req.ip())); } else { responseData.message = "OK"; responseData.data.account.uid = requestData.uid; responseData.data.account.token = requestData.token; responseData.data.account.email = account.getEmail(); - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Client_login_in_token, - req.ip(), responseData.data.account.uid)); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_login_in_token.replace("{ip}", req.ip()).replace("{uid}", responseData.data.account.uid)); } res.send(responseData); @@ -378,16 +376,14 @@ public final class DispatchServer { responseData.retcode = -201; responseData.message = Grasscutter.getLanguage().Wrong_session_key; - Grasscutter.getLogger().info( - String.format(Grasscutter.getLanguage().Client_failed_exchange_combo_token, req.ip())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_failed_exchange_combo_token.replace("{ip}", req.ip())); } else { responseData.message = "OK"; responseData.data.open_id = loginData.uid; responseData.data.combo_id = "157795300"; responseData.data.combo_token = account.generateLoginToken(); - Grasscutter.getLogger().info( - String.format(Grasscutter.getLanguage().Client_exchange_combo_token, req.ip())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_exchange_combo_token.replace("{ip}", req.ip())); } res.send(responseData); @@ -453,7 +449,7 @@ public final class DispatchServer { httpServer.get("/gcstatic/*", new StaticFileHandler()); httpServer.listen(Grasscutter.getConfig().getDispatchOptions().Port); - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Dispatch_start_server_port, httpServer.raw().port())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Dispatch_start_server_port.replace("{port}", Integer.toString(httpServer.raw().port()))); } private Map<String, String> parseQueryString(String qs) { diff --git a/src/main/java/emu/grasscutter/server/dispatch/authentication/DefaultAuthenticationHandler.java b/src/main/java/emu/grasscutter/server/dispatch/authentication/DefaultAuthenticationHandler.java index c0c1f22d2..73c696502 100644 --- a/src/main/java/emu/grasscutter/server/dispatch/authentication/DefaultAuthenticationHandler.java +++ b/src/main/java/emu/grasscutter/server/dispatch/authentication/DefaultAuthenticationHandler.java @@ -51,15 +51,12 @@ public class DefaultAuthenticationHandler implements AuthenticationHandler { responseData.data.account.token = account.generateSessionKey(); responseData.data.account.email = account.getEmail(); - Grasscutter.getLogger() - .info(String.format(Grasscutter.getLanguage().Client_failed_login_account_create, - req.ip(), responseData.data.account.uid)); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_failed_login_account_create.replace("{ip}", req.ip()).replace("{uid}", responseData.data.account.uid)); } else { responseData.retcode = -201; responseData.message = Grasscutter.getLanguage().Username_not_found_create_failed; - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Client_failed_login_account_create_failed - , req.ip())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_failed_login_account_no_found.replace("{ip}", req.ip())); } } else { responseData.retcode = -201; @@ -75,8 +72,7 @@ public class DefaultAuthenticationHandler implements AuthenticationHandler { responseData.data.account.token = account.generateSessionKey(); responseData.data.account.email = account.getEmail(); - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Client_login, req.ip(), - responseData.data.account.uid)); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_login.replace("{ip}", req.ip()).replace("{uid}", responseData.data.account.uid)); } return responseData; diff --git a/src/main/java/emu/grasscutter/server/game/GameServer.java b/src/main/java/emu/grasscutter/server/game/GameServer.java index bbc1cdce5..c2ddcf1bb 100644 --- a/src/main/java/emu/grasscutter/server/game/GameServer.java +++ b/src/main/java/emu/grasscutter/server/game/GameServer.java @@ -208,7 +208,7 @@ public final class GameServer extends KcpServer { @Override public void onStartFinish() { Grasscutter.getLogger().info(Grasscutter.getLanguage().Grasscutter_is_free); - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Game_start_port, address.getPort())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Game_start_port.replace("{port}", Integer.toString(address.getPort()))); ServerStartEvent event = new ServerStartEvent(ServerEvent.Type.GAME, OffsetDateTime.now()); event.call(); } diff --git a/src/main/java/emu/grasscutter/server/game/GameSession.java b/src/main/java/emu/grasscutter/server/game/GameSession.java index d71061ef5..ff024b03b 100644 --- a/src/main/java/emu/grasscutter/server/game/GameSession.java +++ b/src/main/java/emu/grasscutter/server/game/GameSession.java @@ -113,12 +113,12 @@ public class GameSession extends KcpChannel { @Override protected void onConnect() { - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Client_connect, getAddress().getHostString().toLowerCase())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_connect.replace("{address}", getAddress().getHostString().toLowerCase())); } @Override protected synchronized void onDisconnect() { // Synchronize so we dont add character at the same time - Grasscutter.getLogger().info(String.format(Grasscutter.getLanguage().Client_disconnect, getAddress().getHostString().toLowerCase())); + Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_disconnect.replace("{address}", getAddress().getHostString().toLowerCase())); // Set state so no more packets can be handled this.setState(SessionState.INACTIVE);