From 6714a467e391d4cb8f27771c31642142f1914d1e Mon Sep 17 00:00:00 2001 From: Marlo Delatorre Date: Fri, 23 Aug 2024 17:08:06 -0700 Subject: [PATCH] Remove i18n (#15) * Always use US-ASCII instead of making it configurable * Remove LanguageConstants and update references * Update Character.java * Update Client.java * Add missing semicolons * Fix additional compiler errors --- config.yaml | 2 +- database/migration/V1__db_database.sql | 1 - src/main/java/client/Character.java | 22 +---- src/main/java/client/Client.java | 11 +-- .../java/client/command/CommandsExecutor.java | 2 - .../commands/gm0/ChangeLanguageCommand.java | 42 -------- src/main/java/config/YamlConfig.java | 4 +- .../constants/string/CharsetConstants.java | 94 ------------------ .../constants/string/LanguageConstants.java | 95 ------------------- src/main/java/net/packet/ByteBufInPacket.java | 4 +- .../java/net/packet/ByteBufOutPacket.java | 6 +- .../handlers/PlayerLoggedinHandler.java | 1 - .../listener/MatchCheckerCPQChallenge.java | 5 +- .../scripting/npc/NPCConversationManager.java | 28 +++--- .../server/partyquest/MonsterCarnival.java | 38 +++++--- src/main/java/tools/HexTool.java | 6 +- .../java/net/packet/ByteBufInPacketTest.java | 4 +- 17 files changed, 58 insertions(+), 307 deletions(-) delete mode 100644 src/main/java/client/command/commands/gm0/ChangeLanguageCommand.java delete mode 100644 src/main/java/constants/string/CharsetConstants.java delete mode 100644 src/main/java/constants/string/LanguageConstants.java diff --git a/config.yaml b/config.yaml index 879d52280aa..846b21fb5ef 100644 --- a/config.yaml +++ b/config.yaml @@ -294,7 +294,7 @@ server: #Miscellaneous Configuration TIMEZONE: GMT - CHARSET: US-ASCII # Is loaded first, so applies to the rest of this config. Defaults to US-ASCII if invalid or not set. + USE_DISPLAY_NUMBERS_WITH_COMMA: true #Enforce comma on displayed strings (use this when USE_UNITPRICE_WITH_COMMA is active and you still want to display comma-separated values). USE_UNITPRICE_WITH_COMMA: true #Set this accordingly with the layout of the unitPrices on Item.wz XML's, whether it's using commas or dots to represent fractions. MAX_MONITORED_BUFFSTATS: 5 #Limits accounting for "dormant" buff effects, that should take place when stronger stat buffs expires. diff --git a/database/migration/V1__db_database.sql b/database/migration/V1__db_database.sql index 2e8eb057d3e..44f2dbaf94e 100644 --- a/database/migration/V1__db_database.sql +++ b/database/migration/V1__db_database.sql @@ -32,7 +32,6 @@ CREATE TABLE IF NOT EXISTS `accounts` ( `rewardpoints` int(11) NOT NULL DEFAULT '0', `votepoints` int(11) NOT NULL DEFAULT '0', `hwid` varchar(12) NOT NULL DEFAULT '', - `language` int(1) NOT NULL DEFAULT '2', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `ranking1` (`id`,`banned`), diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index f26dcc924e6..6ff21167ff1 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -7070,7 +7070,7 @@ public static Character loadCharFromDB(final int charid, Client client, boolean } // Account info - try (PreparedStatement ps = con.prepareStatement("SELECT name, characterslots, language FROM accounts WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement ps = con.prepareStatement("SELECT name, characterslots FROM accounts WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { ps.setInt(1, ret.accountid); try (ResultSet rs = ps.executeQuery()) { @@ -7079,7 +7079,6 @@ public static Character loadCharFromDB(final int charid, Client client, boolean retClient.setAccountName(rs.getString("name")); retClient.setCharacterSlots(rs.getByte("characterslots")); - retClient.setLanguage(rs.getInt("language")); // thanks Zein for noticing user language not overriding default once player is in-game } } } @@ -11120,24 +11119,7 @@ public void gainAriantPoints(int points) { public int getAriantPoints() { return this.ariantPoints; } - - public void setLanguage(int num) { - getClient().setLanguage(num); - - try (Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("UPDATE accounts SET language = ? WHERE id = ?")) { - ps.setInt(1, num); - ps.setInt(2, getClient().getAccID()); - ps.executeUpdate(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - public int getLanguage() { - return getClient().getLanguage(); - } - + public boolean isChasing() { return chasing; } diff --git a/src/main/java/client/Client.java b/src/main/java/client/Client.java index a7ebc2dcde0..7120bb1455d 100644 --- a/src/main/java/client/Client.java +++ b/src/main/java/client/Client.java @@ -481,7 +481,7 @@ public int login(String login, String pwd, Hwid hwid) { } try (Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT id, password, gender, banned, pin, pic, characterslots, tos, language FROM accounts WHERE name = ?")) { + PreparedStatement ps = con.prepareStatement("SELECT id, password, gender, banned, pin, pic, characterslots, tos FROM accounts WHERE name = ?")) { ps.setString(1, login); try (ResultSet rs = ps.executeQuery()) { @@ -499,7 +499,6 @@ public int login(String login, String pwd, Hwid hwid) { pic = rs.getString("pic"); gender = rs.getByte("gender"); characterSlots = rs.getByte("characterslots"); - lang = rs.getInt("language"); String passhash = rs.getString("password"); byte tos = rs.getByte("tos"); @@ -1387,12 +1386,4 @@ public void resetCsCoupon() { public void enableCSActions() { sendPacket(PacketCreator.enableCSUse(player)); } - - public int getLanguage() { - return lang; - } - - public void setLanguage(int lingua) { - this.lang = lingua; - } } diff --git a/src/main/java/client/command/CommandsExecutor.java b/src/main/java/client/command/CommandsExecutor.java index 247b979f2fe..164fb46ec02 100644 --- a/src/main/java/client/command/CommandsExecutor.java +++ b/src/main/java/client/command/CommandsExecutor.java @@ -24,7 +24,6 @@ package client.command; import client.Client; -import client.command.commands.gm0.ChangeLanguageCommand; import client.command.commands.gm0.DisposeCommand; import client.command.commands.gm0.DropLimitCommand; import client.command.commands.gm0.EquipLvCommand; @@ -346,7 +345,6 @@ private void registerLv0Commands() { addCommand("uptime", UptimeCommand.class); addCommand("gacha", GachaCommand.class); addCommand("dispose", DisposeCommand.class); - addCommand("changel", ChangeLanguageCommand.class); addCommand("equiplv", EquipLvCommand.class); addCommand("showrates", ShowRatesCommand.class); addCommand("rates", RatesCommand.class); diff --git a/src/main/java/client/command/commands/gm0/ChangeLanguageCommand.java b/src/main/java/client/command/commands/gm0/ChangeLanguageCommand.java deleted file mode 100644 index d953d4c11ac..00000000000 --- a/src/main/java/client/command/commands/gm0/ChangeLanguageCommand.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server, commands OdinMS-based - Copyleft (L) 2016 - 2019 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -/* - @Author: Arthur L - Refactored command content into modules -*/ -package client.command.commands.gm0; - -import client.Client; -import client.command.Command; - -public class ChangeLanguageCommand extends Command { - { - setDescription("Change language settings."); - } - - @Override - public void execute(Client c, String[] params) { - if (params.length < 1) { - c.getPlayer().yellowMessage("Syntax: !changel <0=ptb, 1=esp, 2=eng>"); - return; - } - c.setLanguage(Integer.parseInt(params[0])); - } -} diff --git a/src/main/java/config/YamlConfig.java b/src/main/java/config/YamlConfig.java index 2263eb664e7..afbec0429c6 100644 --- a/src/main/java/config/YamlConfig.java +++ b/src/main/java/config/YamlConfig.java @@ -1,10 +1,10 @@ package config; import com.esotericsoftware.yamlbeans.YamlReader; -import constants.string.CharsetConstants; import java.io.FileNotFoundException; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; @@ -19,7 +19,7 @@ public class YamlConfig { private static YamlConfig loadConfig() { try { - YamlReader reader = new YamlReader(Files.newBufferedReader(Path.of(CONFIG_FILE_NAME), CharsetConstants.CHARSET)); + YamlReader reader = new YamlReader(Files.newBufferedReader(Path.of(CONFIG_FILE_NAME), StandardCharsets.US_ASCII)); YamlConfig config = reader.read(YamlConfig.class); reader.close(); return config; diff --git a/src/main/java/constants/string/CharsetConstants.java b/src/main/java/constants/string/CharsetConstants.java deleted file mode 100644 index 5a1243f29d2..00000000000 --- a/src/main/java/constants/string/CharsetConstants.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ - -package constants.string; - -/* - * Thanks to GabrielSin (EllinMS) - gabrielsin@playellin.net - * Ellin - * MapleStory Server - * CharsetConstants - */ - -import com.esotericsoftware.yamlbeans.YamlReader; -import config.YamlConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.Optional; - -public class CharsetConstants { - private static final Logger log = LoggerFactory.getLogger(CharsetConstants.class); - public static final Charset CHARSET = loadCharset(); - - private enum Language { - LANGUAGE_US("US-ASCII"), - LANGUAGE_PT_BR("ISO-8859-1"), - LANGUAGE_THAI("TIS620"), - LANGUAGE_KOREAN("MS949"); - - private final String charset; - - Language(String charset) { - this.charset = charset; - } - - public String getCharset() { - return charset; - } - - public static Language fromCharset(String charset) { - Optional language = Arrays.stream(values()) - .filter(l -> l.charset.equals(charset)) - .findAny(); - if (language.isEmpty()) { - log.warn("Charset {} was not found, defaulting to US-ASCII", charset); - return LANGUAGE_US; - } - - return language.get(); - } - } - - private static String loadCharsetFromConfig() { - try { - YamlReader reader = new YamlReader(Files.newBufferedReader(Path.of(YamlConfig.CONFIG_FILE_NAME), StandardCharsets.US_ASCII)); - reader.getConfig().readConfig.setIgnoreUnknownProperties(true); - StrippedYamlConfig charsetConfig = reader.read(StrippedYamlConfig.class); - reader.close(); - return charsetConfig.server.CHARSET; - } catch (FileNotFoundException e) { - throw new RuntimeException("Could not read config file " + YamlConfig.CONFIG_FILE_NAME + ": " + e.getMessage()); - } catch (IOException e) { - throw new RuntimeException("Could not successfully parse charset from config file " + YamlConfig.CONFIG_FILE_NAME + ": " + e.getMessage()); - } - } - - private static Charset loadCharset() { - String configCharset = loadCharsetFromConfig(); - if (configCharset != null) { - Language language = Language.fromCharset(configCharset); - return Charset.forName(language.getCharset()); - } - - return StandardCharsets.US_ASCII; - } - - private static class StrippedYamlConfig { - public StrippedServerConfig server; - - private static class StrippedServerConfig { - public String CHARSET; - } - } -} \ No newline at end of file diff --git a/src/main/java/constants/string/LanguageConstants.java b/src/main/java/constants/string/LanguageConstants.java deleted file mode 100644 index 05854028edd..00000000000 --- a/src/main/java/constants/string/LanguageConstants.java +++ /dev/null @@ -1,95 +0,0 @@ -package constants.string; - -import client.Character; - -/** - * @author Drago (Dragohe4rt) - */ -public class LanguageConstants { - - enum Language { - LANG_PRT(0), - LANG_ESP(1), - LANG_ENG(2); - - int lang; - - Language(int lang) { - this.lang = lang; - } - - private int getValue() { - return this.lang; - } - - } - - public static String[] CPQBlue = new String[3]; - public static String[] CPQError = new String[3]; - public static String[] CPQEntry = new String[3]; - public static String[] CPQFindError = new String[3]; - public static String[] CPQRed = new String[3]; - public static String[] CPQPlayerExit = new String[3]; - public static String[] CPQEntryLobby = new String[3]; - public static String[] CPQPickRoom = new String[3]; - public static String[] CPQExtendTime = new String[3]; - public static String[] CPQLeaderNotFound = new String[3]; - public static String[] CPQChallengeRoomAnswer = new String[3]; - public static String[] CPQChallengeRoomSent = new String[3]; - public static String[] CPQChallengeRoomDenied = new String[3]; - - static { - int lang; - - lang = Language.LANG_PRT.getValue(); - LanguageConstants.CPQBlue[lang] = "Maple Azul"; - LanguageConstants.CPQRed[lang] = "Maple Vermelho"; - LanguageConstants.CPQExtendTime[lang] = "O tempo foi estendido."; - LanguageConstants.CPQPlayerExit[lang] = " deixou o Carnaval de Monstros."; - LanguageConstants.CPQError[lang] = "Ocorreu um problema. Favor recriar a sala."; - LanguageConstants.CPQLeaderNotFound[lang] = "Nao foi possivel encontrar o Lider."; - LanguageConstants.CPQPickRoom[lang] = "Inscreva-se no Festival de Monstros!\r\n"; - LanguageConstants.CPQChallengeRoomAnswer[lang] = "O grupo esta respondendo um desafio no momento."; - LanguageConstants.CPQChallengeRoomSent[lang] = "Um desafio foi enviado para o grupo na sala. Aguarde um momento."; - LanguageConstants.CPQChallengeRoomDenied[lang] = "O grupo na sala cancelou seu desafio."; - LanguageConstants.CPQFindError[lang] = "Nao foi possivel encontrar um grupo nesta sala.\r\nProvavelmente o grupo foi desfeito dentro da sala!"; - LanguageConstants.CPQEntryLobby[lang] = "Agora voce ira receber desafios de outros grupos. Se voce nao aceitar um desafio em 3 minutos, voce sera levado para fora."; - LanguageConstants.CPQEntry[lang] = "Voce pode selecionar \"Invocar Monstros\", \"Habilidade\", ou \"Protetor\" como sua tatica durante o Carnaval dos Monstros. Use Tab a F1~F12 para acesso rapido!"; - - lang = Language.LANG_ESP.getValue(); - LanguageConstants.CPQBlue[lang] = "Maple Azul"; - LanguageConstants.CPQRed[lang] = "Maple Rojo"; - LanguageConstants.CPQExtendTime[lang] = "El tiempo se ha ampliado."; - LanguageConstants.CPQPlayerExit[lang] = " ha dejado el Carnaval de Monstruos."; - LanguageConstants.CPQLeaderNotFound[lang] = "No se pudo encontrar el Lider."; - LanguageConstants.CPQPickRoom[lang] = "!Inscribete en el Festival de Monstruos!\r\n"; - LanguageConstants.CPQError[lang] = "Se ha producido un problema. Por favor, volver a crear una sala."; - LanguageConstants.CPQChallengeRoomAnswer[lang] = "El grupo esta respondiendo un desafio en el momento."; - LanguageConstants.CPQChallengeRoomSent[lang] = "Un desafio fue enviado al grupo en la sala. Espera un momento."; - LanguageConstants.CPQChallengeRoomDenied[lang] = "El grupo en la sala cancelo su desafio."; - LanguageConstants.CPQFindError[lang] = "No se pudo encontrar un grupo en esta sala.\r\nProbablemente el grupo fue deshecho dentro de la sala!"; - LanguageConstants.CPQEntryLobby[lang] = "Ahora usted recibira los retos de otros grupos. Si usted no acepta un desafio en 3 minutos, usted sera llevado hacia fuera."; - LanguageConstants.CPQEntry[lang] = "Usted puede seleccionar \"Invocar Monstruos\", \"Habilidad\", o \"Protector\" como su tactica durante el Carnaval de los Monstruos. Utilice Tab y F1 ~ F12 para acceso rapido!"; - - lang = Language.LANG_ENG.getValue(); - LanguageConstants.CPQBlue[lang] = "Maple Blue"; - LanguageConstants.CPQRed[lang] = "Maple Red"; - LanguageConstants.CPQPlayerExit[lang] = " left the Carnival of Monsters."; - LanguageConstants.CPQExtendTime[lang] = "The time has been extended."; - LanguageConstants.CPQLeaderNotFound[lang] = "Could not find the Leader."; - LanguageConstants.CPQError[lang] = "There was a problem. Please re-create a room."; - LanguageConstants.CPQPickRoom[lang] = "Sign up for the Monster Festival!\r\n"; - LanguageConstants.CPQChallengeRoomAnswer[lang] = "The group is currently facing a challenge."; - LanguageConstants.CPQChallengeRoomSent[lang] = "A challenge has been sent to the group in the room. Please wait a while."; - LanguageConstants.CPQChallengeRoomDenied[lang] = "The group in the room canceled your challenge."; - LanguageConstants.CPQFindError[lang] = "We could not find a group in this room.\r\nProbably the group was scrapped inside the room!"; - LanguageConstants.CPQEntryLobby[lang] = "You will now receive challenges from other groups. If you do not accept a challenge within 3 minutes, you will be taken out."; - LanguageConstants.CPQEntry[lang] = "You can select \"Summon Monsters\", \"Ability\", or \"Protector\" as your tactic during the Monster Carnival. Use Tab and F1 ~ F12 for quick access!"; - - - } - - public static String getMessage(Character chr, String[] message) { - return message[chr.getLanguage()]; - } -} diff --git a/src/main/java/net/packet/ByteBufInPacket.java b/src/main/java/net/packet/ByteBufInPacket.java index 25b139629c2..d870fceb881 100644 --- a/src/main/java/net/packet/ByteBufInPacket.java +++ b/src/main/java/net/packet/ByteBufInPacket.java @@ -1,10 +1,10 @@ package net.packet; -import constants.string.CharsetConstants; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import java.awt.*; +import java.nio.charset.StandardCharsets; public class ByteBufInPacket implements InPacket { private final ByteBuf byteBuf; @@ -52,7 +52,7 @@ public String readString() { short length = readShort(); byte[] stringBytes = new byte[length]; byteBuf.readBytes(stringBytes); - return new String(stringBytes, CharsetConstants.CHARSET); + return new String(stringBytes, StandardCharsets.US_ASCII); } @Override diff --git a/src/main/java/net/packet/ByteBufOutPacket.java b/src/main/java/net/packet/ByteBufOutPacket.java index 376253d2806..f573dced33e 100644 --- a/src/main/java/net/packet/ByteBufOutPacket.java +++ b/src/main/java/net/packet/ByteBufOutPacket.java @@ -1,6 +1,5 @@ package net.packet; -import constants.string.CharsetConstants; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; @@ -8,6 +7,7 @@ import net.opcodes.SendOpcode; import java.awt.*; +import java.nio.charset.StandardCharsets; @NotThreadSafe public class ByteBufOutPacket implements OutPacket { @@ -71,14 +71,14 @@ public void writeBool(boolean value) { @Override public void writeString(String value) { - byte[] bytes = value.getBytes(CharsetConstants.CHARSET); + byte[] bytes = value.getBytes(StandardCharsets.US_ASCII); writeShort(bytes.length); writeBytes(bytes); } @Override public void writeFixedString(String value) { - writeBytes(value.getBytes(CharsetConstants.CHARSET)); + writeBytes(value.getBytes(StandardCharsets.US_ASCII)); } @Override diff --git a/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java index f888c6134cd..d5f2a6f892a 100644 --- a/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -220,7 +220,6 @@ public final void handlePacket(InPacket p, Client c) { } if (!newcomer) { - c.setLanguage(player.getClient().getLanguage()); c.setCharacterSlots((byte) player.getClient().getCharacterSlots()); player.newClient(c); } diff --git a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java index 0e113eaa1e9..6dc4b4bc61b 100644 --- a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java +++ b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java @@ -20,7 +20,6 @@ package net.server.coordinator.matchchecker.listener; import client.Character; -import constants.string.LanguageConstants; import net.server.coordinator.matchchecker.AbstractMatchCheckerListener; import net.server.coordinator.matchchecker.MatchCheckerListenerRecipe; import net.server.world.PartyCharacter; @@ -82,7 +81,7 @@ public void onMatchCreated(Character leader, Set nonLeaderMatchPlayer NPCScriptManager.getInstance().start("cpqchallenge2", ldr.getClient(), npcid, chrMembers); } - cm.sendOk(LanguageConstants.getMessage(chr, LanguageConstants.CPQChallengeRoomSent)); + cm.sendOk("A challenge has been sent to the group in the room. Please wait a while."); } @Override @@ -111,7 +110,7 @@ public void onMatchAccepted(int leaderid, Set matchPlayers, String me @Override public void onMatchDeclined(int leaderid, Set matchPlayers, String message) { Character chr = getChallenger(leaderid, matchPlayers); - chr.dropMessage(5, LanguageConstants.getMessage(chr, LanguageConstants.CPQChallengeRoomDenied)); + chr.dropMessage(5, "The group in the room has canceled your challenge"); } @Override diff --git a/src/main/java/scripting/npc/NPCConversationManager.java b/src/main/java/scripting/npc/NPCConversationManager.java index bec34cb9394..b6b74723a01 100644 --- a/src/main/java/scripting/npc/NPCConversationManager.java +++ b/src/main/java/scripting/npc/NPCConversationManager.java @@ -31,7 +31,6 @@ import constants.id.MapId; import constants.id.NpcId; import constants.inventory.ItemConstants; -import constants.string.LanguageConstants; import net.server.Server; import net.server.channel.Channel; import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType; @@ -622,7 +621,7 @@ public int cpqCalcAvgLvl(int map) { } public boolean sendCPQMapLists() { - String msg = LanguageConstants.getMessage(getPlayer(), LanguageConstants.CPQPickRoom); + String msg = "Sign up for the Monster Festival!\r\n"; int msgLen = msg.length(); for (int i = 0; i < 6; i++) { if (fieldTaken(i)) { @@ -678,7 +677,7 @@ public void cpqLobby(int field) { if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); - mc.sendPacket(PacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); + mc.sendPacket(PacketCreator.serverNotice(6, "You will now receive challenges from other groups. If you do not accept a challenge within 3 minutes, you will be taken out.")); TimerManager tMan = TimerManager.getInstance(); tMan.schedule(() -> mapClock((int) MINUTES.toSeconds(3)), 1500); @@ -865,7 +864,7 @@ public void startCPQ2(final Character challenger, final int field) { } public boolean sendCPQMapLists2() { - String msg = LanguageConstants.getMessage(getPlayer(), LanguageConstants.CPQPickRoom); + String msg = "Sign up for the Monster Festival!\r\n"; int msgLen = msg.length(); for (int i = 0; i < 3; i++) { if (fieldTaken2(i)) { @@ -921,7 +920,7 @@ public void cpqLobby2(int field) { if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); - mc.sendPacket(PacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); + mc.sendPacket(PacketCreator.serverNotice(6, "You will now receive challenges from other groups. If you do not accept a challenge within 3 minutes, you will be taken out.")); TimerManager tMan = TimerManager.getInstance(); tMan.schedule(() -> mapClock((int) MINUTES.toSeconds(3)), 1500); @@ -955,7 +954,7 @@ public void challengeParty2(int field) { for (MapObject mmo : map.getAllPlayer()) { Character mc = (Character) mmo; if (mc.getParty() == null) { - sendOk(LanguageConstants.getMessage(mc, LanguageConstants.CPQFindError)); + sendOk("We could not find a group in this room.\r\nProbably the group was scrapped inside the room!"); return; } if (mc.getParty().getLeader().getId() == mc.getId()) { @@ -966,13 +965,13 @@ public void challengeParty2(int field) { if (leader != null) { if (!leader.isChallenged()) { if (!sendCPQChallenge("cpq2", leader.getId())) { - sendOk(LanguageConstants.getMessage(leader, LanguageConstants.CPQChallengeRoomAnswer)); + sendOk("The group is currently facing a challenge."); } } else { - sendOk(LanguageConstants.getMessage(leader, LanguageConstants.CPQChallengeRoomAnswer)); + sendOk("The group is currently facing a challenge."); } } else { - sendOk(LanguageConstants.getMessage(leader, LanguageConstants.CPQLeaderNotFound)); + sendOk("Could not find the leader."); } } @@ -986,7 +985,7 @@ public void challengeParty(int field) { for (MapObject mmo : map.getAllPlayer()) { Character mc = (Character) mmo; if (mc.getParty() == null) { - sendOk(LanguageConstants.getMessage(mc, LanguageConstants.CPQFindError)); + sendOk("We could not find a group in this room.\r\nProbably the group was scrapped inside the room!"); return; } if (mc.getParty().getLeader().getId() == mc.getId()) { @@ -995,15 +994,16 @@ public void challengeParty(int field) { } } if (leader != null) { + String CHALLENGE_MSG = "The group is currently facing a challenge."; if (!leader.isChallenged()) { if (!sendCPQChallenge("cpq1", leader.getId())) { - sendOk(LanguageConstants.getMessage(leader, LanguageConstants.CPQChallengeRoomAnswer)); + sendOk(CHALLENGE_MSG); } } else { - sendOk(LanguageConstants.getMessage(leader, LanguageConstants.CPQChallengeRoomAnswer)); + sendOk(CHALLENGE_MSG); } } else { - sendOk(LanguageConstants.getMessage(leader, LanguageConstants.CPQLeaderNotFound)); + sendOk("Could not find the leader."); } } @@ -1099,4 +1099,4 @@ public boolean createMarriageWishlist() { return false; } -} \ No newline at end of file +} diff --git a/src/main/java/server/partyquest/MonsterCarnival.java b/src/main/java/server/partyquest/MonsterCarnival.java index c19fd4cde3a..59b2676ba4f 100644 --- a/src/main/java/server/partyquest/MonsterCarnival.java +++ b/src/main/java/server/partyquest/MonsterCarnival.java @@ -2,7 +2,6 @@ import client.Character; import config.YamlConfig; -import constants.string.LanguageConstants; import net.server.Server; import net.server.channel.Channel; import net.server.world.Party; @@ -49,51 +48,66 @@ public MonsterCarnival(Party p1, Party p2, int mapid, boolean cpq1, int room) { startTime = System.currentTimeMillis() + MINUTES.toMillis(10); int redPortal = 0; int bluePortal = 0; + if (map.isPurpleCPQMap()) { redPortal = 2; bluePortal = 1; } + + String CPQ_ENTRY_MESSAGE = "You can select \"Summon Monseters\", \"Ability\", or \"Protector as your during the Monster Carnival. Use Tab and F1 ~ F12 for quick access!"; + for (PartyCharacter mpc : p1.getMembers()) { Character mc = mpc.getPlayer(); + if (mc != null) { mc.setMonsterCarnival(this); mc.setTeam(0); mc.setFestivalPoints(0); mc.forceChangeMap(map, map.getPortal(redPortal)); - mc.dropMessage(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntry)); + mc.dropMessage(6, CPQ_ENTRY_MESSAGE); + if (p1.getLeader().getId() == mc.getId()) { leader1 = mc; } + team1 = mc; } } + for (PartyCharacter mpc : p2.getMembers()) { Character mc = mpc.getPlayer(); + if (mc != null) { mc.setMonsterCarnival(this); mc.setTeam(1); mc.setFestivalPoints(0); mc.forceChangeMap(map, map.getPortal(bluePortal)); - mc.dropMessage(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntry)); + mc.dropMessage(6, CPQ_ENTRY_MESSAGE); if (p2.getLeader().getId() == mc.getId()) { leader2 = mc; } team2 = mc; } } + + String CPQ_ERROR_MESSAGE = "There was a problem. Please re-create a room."; if (team1 == null || team2 == null) { for (PartyCharacter mpc : p1.getMembers()) { Character chr = mpc.getPlayer(); + if (chr != null) { - chr.dropMessage(5, LanguageConstants.getMessage(chr, LanguageConstants.CPQError)); + chr.dropMessage(5, CPQ_ERROR_MESSAGE); } } + for (PartyCharacter mpc : p2.getMembers()) { Character chr = mpc.getPlayer(); + if (chr != null) { - chr.dropMessage(5, LanguageConstants.getMessage(chr, LanguageConstants.CPQError)); + chr.dropMessage(5, CPQ_ERROR_MESSAGE); } } + return; } @@ -132,13 +146,13 @@ public void playerDisconnected(int charid) { String teamS = ""; switch (team) { case 0: - teamS = LanguageConstants.getMessage(chrMap, LanguageConstants.CPQRed); + teamS = "Maple Red"; break; case 1: - teamS = LanguageConstants.getMessage(chrMap, LanguageConstants.CPQBlue); + teamS = "Maple Blue"; break; } - chrMap.dropMessage(5, teamS + LanguageConstants.getMessage(chrMap, LanguageConstants.CPQPlayerExit)); + chrMap.dropMessage(5, teamS + " left the Carnival of Monsters."); } earlyFinish(); } @@ -345,7 +359,7 @@ public int getTimeLeftSeconds() { private void extendTime() { for (Character chrMap : map.getAllPlayers()) { - chrMap.dropMessage(5, LanguageConstants.getMessage(chrMap, LanguageConstants.CPQExtendTime)); + chrMap.dropMessage(5, "The time has been extended"); } startTime = System.currentTimeMillis() + MINUTES.toMillis(3); @@ -369,7 +383,7 @@ public void complete() { int chnl = leader1.getClient().getChannel(); int chnl1 = leader2.getClient().getChannel(); if (chnl != chnl1) { - throw new RuntimeException("Os lideres estao em canais diferentes."); + throw new RuntimeException("The leaders are on different channels."); } map.killAllMonsters(); @@ -483,7 +497,7 @@ public int getTotalCP(int team) { } else if (team == 1) { return blueTotalCP; } else { - throw new RuntimeException("Equipe desconhecida"); + throw new RuntimeException("Unknown team"); } } @@ -501,7 +515,7 @@ public int getCP(int team) { } else if (team == 1) { return blueCP; } else { - throw new RuntimeException("Equipe desconhecida" + team); + throw new RuntimeException("Unknown team " + team); } } diff --git a/src/main/java/tools/HexTool.java b/src/main/java/tools/HexTool.java index 64b7959a0a3..db10e309f48 100644 --- a/src/main/java/tools/HexTool.java +++ b/src/main/java/tools/HexTool.java @@ -21,10 +21,10 @@ */ package tools; -import constants.string.CharsetConstants; - +import java.nio.charset.StandardCharsets; import java.util.HexFormat; + /** * Handles converting back and forth from byte arrays to hex strings. */ @@ -80,7 +80,7 @@ public static String toStringFromAscii(final byte[] bytes) { } } - return new String(filteredBytes, CharsetConstants.CHARSET); + return new String(filteredBytes, StandardCharsets.US_ASCII); } private static boolean isSpecialCharacter(byte asciiCode) { diff --git a/src/test/java/net/packet/ByteBufInPacketTest.java b/src/test/java/net/packet/ByteBufInPacketTest.java index 34b87e89b8e..f05d069a4fe 100644 --- a/src/test/java/net/packet/ByteBufInPacketTest.java +++ b/src/test/java/net/packet/ByteBufInPacketTest.java @@ -1,6 +1,5 @@ package net.packet; -import constants.string.CharsetConstants; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.opcodes.SendOpcode; @@ -8,6 +7,7 @@ import org.junit.jupiter.api.Test; import java.awt.*; +import java.nio.charset.StandardCharsets; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -113,7 +113,7 @@ void readPoint() { void readString() { final String writtenString = "You have gained experience (+3200)"; byteBuf.writeShortLE(writtenString.length()); - byte[] writtenStringBytes = writtenString.getBytes(CharsetConstants.CHARSET); + byte[] writtenStringBytes = writtenString.getBytes(StandardCharsets.US_ASCII); byteBuf.writeBytes(writtenStringBytes); String readString = inPacket.readString();