From 571d804f50fdc10680094d3b7ca6a45f6bf9a84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Fri, 5 Aug 2022 19:33:15 +0700 Subject: [PATCH 1/9] Character storage won't get initialize at first time on server --- src/main/java/client/Character.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index c5cd8faf57..7eda2656fc 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -8297,6 +8297,15 @@ public class Character extends AbstractCharacterObject { } } + /* + * Bugs when player first time into server + * The storage won't get initialize + * and must wait until next login + */ + if (getStorage() == null) { + Server.getInstance().getWorld(world).loadAccountStorage(accountid); + } + con.commit(); return true; } catch (Exception e) { From 61c3e75a529398a100e8d271bb78375eddcccfc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Sat, 6 Aug 2022 18:13:47 +0700 Subject: [PATCH 2/9] Fully mirgate main source to Java NIO (except some files in tools). --- .../java/constants/string/CharsetConstants.java | 5 +++-- src/main/java/provider/DataProviderFactory.java | 1 - src/main/java/provider/wz/WZFiles.java | 4 ++-- src/main/java/provider/wz/XMLDomMapleData.java | 1 - .../java/scripting/AbstractScriptManager.java | 15 +++++++++------ 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/constants/string/CharsetConstants.java b/src/main/java/constants/string/CharsetConstants.java index 0656d37375..c64c9a1972 100644 --- a/src/main/java/constants/string/CharsetConstants.java +++ b/src/main/java/constants/string/CharsetConstants.java @@ -19,10 +19,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.IOException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Arrays; import java.util.Optional; @@ -61,7 +62,7 @@ public class CharsetConstants { private static String loadCharsetFromConfig() { try { - YamlReader reader = new YamlReader(new FileReader(YamlConfig.CONFIG_FILE_NAME, StandardCharsets.US_ASCII)); + YamlReader reader = new YamlReader(Files.newBufferedReader(Paths.get(YamlConfig.CONFIG_FILE_NAME), StandardCharsets.US_ASCII)); reader.getConfig().readConfig.setIgnoreUnknownProperties(true); StrippedYamlConfig charsetConfig = reader.read(StrippedYamlConfig.class); reader.close(); diff --git a/src/main/java/provider/DataProviderFactory.java b/src/main/java/provider/DataProviderFactory.java index a90751a83d..42e957b48a 100644 --- a/src/main/java/provider/DataProviderFactory.java +++ b/src/main/java/provider/DataProviderFactory.java @@ -24,7 +24,6 @@ package provider; import provider.wz.WZFiles; import provider.wz.XMLWZFile; -import java.io.File; import java.nio.file.Path; public class DataProviderFactory { diff --git a/src/main/java/provider/wz/WZFiles.java b/src/main/java/provider/wz/WZFiles.java index 783785e85e..af90f8d27d 100644 --- a/src/main/java/provider/wz/WZFiles.java +++ b/src/main/java/provider/wz/WZFiles.java @@ -1,6 +1,6 @@ package provider.wz; -import java.io.File; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -38,7 +38,7 @@ public enum WZFiles { private static String getWzDirectory() { // Either provide a custom directory path through the "wz-path" property when launching the .jar, or don't provide one to use the default "wz" directory String propertyPath = System.getProperty("wz-path"); - if (propertyPath != null && new File(propertyPath).isDirectory()) { + if (propertyPath != null && Files.isDirectory(Paths.get(propertyPath))) { return propertyPath; } diff --git a/src/main/java/provider/wz/XMLDomMapleData.java b/src/main/java/provider/wz/XMLDomMapleData.java index da37b46880..942c98bc50 100644 --- a/src/main/java/provider/wz/XMLDomMapleData.java +++ b/src/main/java/provider/wz/XMLDomMapleData.java @@ -34,7 +34,6 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.awt.*; -import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Path; diff --git a/src/main/java/scripting/AbstractScriptManager.java b/src/main/java/scripting/AbstractScriptManager.java index 8b921bf4d7..796be2c27e 100644 --- a/src/main/java/scripting/AbstractScriptManager.java +++ b/src/main/java/scripting/AbstractScriptManager.java @@ -28,9 +28,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.script.*; -import java.io.File; -import java.io.FileReader; + +import java.io.BufferedReader; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; /** * @author Matze @@ -45,8 +48,8 @@ public abstract class AbstractScriptManager { protected ScriptEngine getInvocableScriptEngine(String path) { path = "scripts/" + path; - File scriptFile = new File(path); - if (!scriptFile.exists()) { + Path scriptFile = Paths.get(path); + if (!Files.exists(scriptFile)) { return null; } @@ -57,8 +60,8 @@ public abstract class AbstractScriptManager { enableScriptHostAccess(graalScriptEngine); - try (FileReader fr = new FileReader(scriptFile, CharsetConstants.CHARSET)) { - engine.eval(fr); + try (BufferedReader br = Files.newBufferedReader(scriptFile, CharsetConstants.CHARSET)) { + engine.eval(br); } catch (final ScriptException | IOException t) { log.warn("Exception during script eval for file: {}", path, t); return null; From bbdf236a10c31db8360d60ae0efcbcfb2919acfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Sat, 6 Aug 2022 18:16:52 +0700 Subject: [PATCH 3/9] Clean code --- src/main/java/scripting/AbstractScriptManager.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/scripting/AbstractScriptManager.java b/src/main/java/scripting/AbstractScriptManager.java index 796be2c27e..3e3ed86ba2 100644 --- a/src/main/java/scripting/AbstractScriptManager.java +++ b/src/main/java/scripting/AbstractScriptManager.java @@ -47,8 +47,7 @@ public abstract class AbstractScriptManager { } protected ScriptEngine getInvocableScriptEngine(String path) { - path = "scripts/" + path; - Path scriptFile = Paths.get(path); + Path scriptFile = Paths.get("scripts").resolve(path); if (!Files.exists(scriptFile)) { return null; } From f983b4dccf1efd2b722236e80df9c08f70c91a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Sun, 7 Aug 2022 01:35:02 +0700 Subject: [PATCH 4/9] Clean up code & Upgrade syntax to new Java --- src/main/java/client/Ring.java | 4 ++-- .../client/command/commands/gm2/IdCommand.java | 16 +++++++++------- .../command/commands/gm2/WhereaMiCommand.java | 12 ++++-------- .../client/command/commands/gm3/PeCommand.java | 11 +++++------ src/main/java/config/YamlConfig.java | 5 +++-- .../channel/handlers/CashOperationHandler.java | 9 +++------ .../channel/handlers/CharInfoRequestHandler.java | 3 +-- .../net/server/channel/handlers/DoorHandler.java | 3 +-- .../channel/handlers/HiredMerchantRequest.java | 3 +-- .../server/channel/handlers/NPCTalkHandler.java | 3 +-- .../handlers/PlayerInteractionHandler.java | 6 ++---- src/main/java/net/server/guild/Guild.java | 7 +++---- .../java/net/server/guild/GuildCharacter.java | 7 +++---- .../java/server/ItemInformationProvider.java | 3 +-- src/main/java/server/maps/MapFactory.java | 3 +-- src/main/java/server/maps/MapleMap.java | 3 +-- src/main/java/tools/ArrayMap.java | 7 +++---- 17 files changed, 44 insertions(+), 61 deletions(-) diff --git a/src/main/java/client/Ring.java b/src/main/java/client/Ring.java index 2219f41db9..a753c6a40b 100644 --- a/src/main/java/client/Ring.java +++ b/src/main/java/client/Ring.java @@ -174,8 +174,8 @@ public class Ring implements Comparable { @Override public boolean equals(Object o) { - if (o instanceof Ring) { - return ((Ring) o).getRingId() == getRingId(); + if (o instanceof Ring ring) { + return ring.getRingId() == getRingId(); } return false; } diff --git a/src/main/java/client/command/commands/gm2/IdCommand.java b/src/main/java/client/command/commands/gm2/IdCommand.java index 6151675caa..7b56f6bd21 100644 --- a/src/main/java/client/command/commands/gm2/IdCommand.java +++ b/src/main/java/client/command/commands/gm2/IdCommand.java @@ -8,8 +8,9 @@ import server.ThreadManager; import tools.exceptions.IdTypeNotSupportedException; import java.io.BufferedReader; -import java.io.FileReader; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -75,12 +76,13 @@ public class IdCommand extends Command { throw new IdTypeNotSupportedException(); } itemMap.put(type, new HashMap<>()); - BufferedReader reader = new BufferedReader(new FileReader(handbookDirectory.get(type))); - String line; - while ((line = reader.readLine()) != null) { - String[] row = line.split(" - ", 2); - if (row.length == 2) { - itemMap.get(type).put(row[1].toLowerCase(), row[0]); + try (BufferedReader reader = Files.newBufferedReader(Paths.get(handbookDirectory.get(type)))) { + String line; + while ((line = reader.readLine()) != null) { + String[] row = line.split(" - ", 2); + if (row.length == 2) { + itemMap.get(type).put(row[1].toLowerCase(), row[0]); + } } } } diff --git a/src/main/java/client/command/commands/gm2/WhereaMiCommand.java b/src/main/java/client/command/commands/gm2/WhereaMiCommand.java index d1c69ea7ac..b4ddc29d9f 100644 --- a/src/main/java/client/command/commands/gm2/WhereaMiCommand.java +++ b/src/main/java/client/command/commands/gm2/WhereaMiCommand.java @@ -48,19 +48,15 @@ public class WhereaMiCommand extends Command { HashSet mobs = new HashSet<>(); for (MapObject mmo : player.getMap().getMapObjects()) { - if (mmo instanceof NPC) { - NPC npc = (NPC) mmo; + if (mmo instanceof NPC npc) { npcs.add(npc); - } else if (mmo instanceof Character) { - Character mc = (Character) mmo; + } else if (mmo instanceof Character mc) { chars.add(mc); - } else if (mmo instanceof Monster) { - Monster mob = (Monster) mmo; + } else if (mmo instanceof Monster mob) { if (mob.isAlive()) { mobs.add(mob); } - } else if (mmo instanceof PlayerNPC) { - PlayerNPC npc = (PlayerNPC) mmo; + } else if (mmo instanceof PlayerNPC npc) { playernpcs.add(npc); } } diff --git a/src/main/java/client/command/commands/gm3/PeCommand.java b/src/main/java/client/command/commands/gm3/PeCommand.java index da2af746c3..ed2a4efa4a 100644 --- a/src/main/java/client/command/commands/gm3/PeCommand.java +++ b/src/main/java/client/command/commands/gm3/PeCommand.java @@ -35,9 +35,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import tools.HexTool; -import java.io.FileReader; +import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Properties; public class PeCommand extends Command { @@ -51,11 +52,9 @@ public class PeCommand extends Command { public void execute(Client c, String[] params) { Character player = c.getPlayer(); String packet = ""; - try { - InputStreamReader is = new FileReader("pe.txt"); + try (BufferedReader br = Files.newBufferedReader(Paths.get("pe.txt"))) { Properties packetProps = new Properties(); - packetProps.load(is); - is.close(); + packetProps.load(br); packet = packetProps.getProperty("pe"); } catch (IOException ex) { ex.printStackTrace(); diff --git a/src/main/java/config/YamlConfig.java b/src/main/java/config/YamlConfig.java index 68d383bc82..51401c3c3b 100644 --- a/src/main/java/config/YamlConfig.java +++ b/src/main/java/config/YamlConfig.java @@ -4,8 +4,9 @@ import com.esotericsoftware.yamlbeans.YamlReader; import constants.string.CharsetConstants; import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.List; @@ -18,7 +19,7 @@ public class YamlConfig { private static YamlConfig loadConfig() { try { - YamlReader reader = new YamlReader(new FileReader(CONFIG_FILE_NAME, CharsetConstants.CHARSET)); + YamlReader reader = new YamlReader(Files.newBufferedReader(Paths.get(CONFIG_FILE_NAME), CharsetConstants.CHARSET)); YamlConfig config = reader.read(YamlConfig.class); reader.close(); return config; diff --git a/src/main/java/net/server/channel/handlers/CashOperationHandler.java b/src/main/java/net/server/channel/handlers/CashOperationHandler.java index 0f2eeb4e08..7589c8af8f 100644 --- a/src/main/java/net/server/channel/handlers/CashOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/CashOperationHandler.java @@ -269,8 +269,7 @@ public final class CashOperationHandler extends AbstractPacketHandler { cs.removeFromInventory(item); c.sendPacket(PacketCreator.takeFromCashInventory(item)); - if (item instanceof Equip) { - Equip equip = (Equip) item; + if (item instanceof Equip equip) { if (equip.getRingId() >= 0) { Ring ring = Ring.loadFromDb(equip.getRingId()); chr.addPlayerRing(ring); @@ -323,8 +322,7 @@ public final class CashOperationHandler extends AbstractPacketHandler { return; }*/ //Gotta let them faggots marry too, hence why this is commented out <3 - if (itemRing.toItem() instanceof Equip) { - Equip eqp = (Equip) itemRing.toItem(); + if (itemRing.toItem() instanceof Equip eqp) { Pair rings = Ring.createRing(itemRing.getItemId(), chr, partner); eqp.setRingId(rings.getLeft()); cs.addToInventory(eqp); @@ -387,8 +385,7 @@ public final class CashOperationHandler extends AbstractPacketHandler { c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xBE)); } else { // Need to check to make sure its actually an equip and the right SN... - if (itemRing.toItem() instanceof Equip) { - Equip eqp = (Equip) itemRing.toItem(); + if (itemRing.toItem() instanceof Equip eqp) { Pair rings = Ring.createRing(itemRing.getItemId(), chr, partner); eqp.setRingId(rings.getLeft()); cs.addToInventory(eqp); diff --git a/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java b/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java index ddc6be1ce9..4667ef8b9d 100644 --- a/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java +++ b/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java @@ -36,8 +36,7 @@ public final class CharInfoRequestHandler extends AbstractPacketHandler { int cid = p.readInt(); MapObject target = c.getPlayer().getMap().getMapObject(cid); if (target != null) { - if (target instanceof Character) { - Character player = (Character) target; + if (target instanceof Character player) { if (c.getPlayer().getId() != player.getId()) { player.exportExcludedItems(c); diff --git a/src/main/java/net/server/channel/handlers/DoorHandler.java b/src/main/java/net/server/channel/handlers/DoorHandler.java index e312d26f2e..5166413c44 100644 --- a/src/main/java/net/server/channel/handlers/DoorHandler.java +++ b/src/main/java/net/server/channel/handlers/DoorHandler.java @@ -45,8 +45,7 @@ public final class DoorHandler extends AbstractPacketHandler { } for (MapObject obj : chr.getMap().getMapObjects()) { - if (obj instanceof DoorObject) { - DoorObject door = (DoorObject) obj; + if (obj instanceof DoorObject door) { if (door.getOwnerId() == ownerid) { door.warp(chr); return; diff --git a/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java b/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java index 04c5f4345f..8c77d1f9b9 100644 --- a/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java +++ b/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java @@ -47,8 +47,7 @@ public final class HiredMerchantRequest extends AbstractPacketHandler { try { for (MapObject mmo : chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapObjectType.HIRED_MERCHANT, MapObjectType.PLAYER))) { - if (mmo instanceof Character) { - Character mc = (Character) mmo; + if (mmo instanceof Character mc) { PlayerShop shop = mc.getPlayerShop(); if (shop != null && shop.isOwner(mc)) { diff --git a/src/main/java/net/server/channel/handlers/NPCTalkHandler.java b/src/main/java/net/server/channel/handlers/NPCTalkHandler.java index 0815174dbe..413b925642 100644 --- a/src/main/java/net/server/channel/handlers/NPCTalkHandler.java +++ b/src/main/java/net/server/channel/handlers/NPCTalkHandler.java @@ -87,8 +87,7 @@ public final class NPCTalkHandler extends AbstractPacketHandler { } } } - } else if (obj instanceof PlayerNPC) { - PlayerNPC pnpc = (PlayerNPC) obj; + } else if (obj instanceof PlayerNPC pnpc) { NPCScriptManager nsm = NPCScriptManager.getInstance(); if (pnpc.getScriptId() < NpcId.CUSTOM_DEV && !nsm.isNpcScriptAvailable(c, "" + pnpc.getScriptId())) { diff --git a/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java b/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java index edd39143b2..a671b51690 100644 --- a/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java @@ -291,11 +291,10 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler { MapObject ob = chr.getMap().getMapObject(oid); if (ob instanceof PlayerShop shop) { shop.visitShop(chr); - } else if (ob instanceof MiniGame) { + } else if (ob instanceof MiniGame game) { p.skip(1); String pw = p.available() > 1 ? p.readString() : ""; - MiniGame game = (MiniGame) ob; if (game.checkPassword(pw)) { if (game.hasFreeSlot() && !game.isVisitor(chr)) { game.addVisitor(chr); @@ -849,8 +848,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler { private static boolean canPlaceStore(Character chr) { try { for (MapObject mmo : chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapObjectType.HIRED_MERCHANT, MapObjectType.PLAYER))) { - if (mmo instanceof Character) { - Character mc = (Character) mmo; + if (mmo instanceof Character mc) { if (mc.getId() == chr.getId()) { continue; } diff --git a/src/main/java/net/server/guild/Guild.java b/src/main/java/net/server/guild/Guild.java index 8a05cd97cc..ac86a95c73 100644 --- a/src/main/java/net/server/guild/Guild.java +++ b/src/main/java/net/server/guild/Guild.java @@ -604,11 +604,10 @@ public class Guild { @Override public boolean equals(Object other) { - if (!(other instanceof GuildCharacter)) { - return false; + if (other instanceof GuildCharacter o) { + return (o.getId() == id && o.getName().equals(name)); } - GuildCharacter o = (GuildCharacter) other; - return (o.getId() == id && o.getName().equals(name)); + return false; } @Override diff --git a/src/main/java/net/server/guild/GuildCharacter.java b/src/main/java/net/server/guild/GuildCharacter.java index dff14a3558..e502edd49c 100644 --- a/src/main/java/net/server/guild/GuildCharacter.java +++ b/src/main/java/net/server/guild/GuildCharacter.java @@ -150,11 +150,10 @@ public class GuildCharacter { @Override public boolean equals(Object other) { - if (!(other instanceof GuildCharacter)) { - return false; + if (other instanceof GuildCharacter o) { + return (o.getId() == id && o.getName().equals(name)); } - GuildCharacter o = (GuildCharacter) other; - return (o.getId() == id && o.getName().equals(name)); + return false; } @Override diff --git a/src/main/java/server/ItemInformationProvider.java b/src/main/java/server/ItemInformationProvider.java index 8154543dd8..c2a04457f5 100644 --- a/src/main/java/server/ItemInformationProvider.java +++ b/src/main/java/server/ItemInformationProvider.java @@ -1033,8 +1033,7 @@ public class ItemInformationProvider { public Item scrollEquipWithId(Item equip, int scrollId, boolean usingWhiteScroll, int vegaItemId, boolean isGM) { boolean assertGM = (isGM && YamlConfig.config.server.USE_PERFECT_GM_SCROLL); - if (equip instanceof Equip) { - Equip nEquip = (Equip) equip; + if (equip instanceof Equip nEquip) { Map stats = this.getEquipStats(scrollId); if (((nEquip.getUpgradeSlots() > 0 || ItemConstants.isCleanSlate(scrollId))) || assertGM) { diff --git a/src/main/java/server/maps/MapFactory.java b/src/main/java/server/maps/MapFactory.java index f9f7c09506..1c7a85cd0c 100644 --- a/src/main/java/server/maps/MapFactory.java +++ b/src/main/java/server/maps/MapFactory.java @@ -112,8 +112,7 @@ public class MapFactory { private static void loadLifeRaw(MapleMap map, int id, String type, int cy, int f, int fh, int rx0, int rx1, int x, int y, int hide, int mobTime, int team) { AbstractLoadedLife myLife = loadLife(id, type, cy, f, fh, rx0, rx1, x, y, hide); - if (myLife instanceof Monster) { - Monster monster = (Monster) myLife; + if (myLife instanceof Monster monster) { if (mobTime == -1) { //does not respawn, force spawn once map.spawnMonster(monster); diff --git a/src/main/java/server/maps/MapleMap.java b/src/main/java/server/maps/MapleMap.java index 50b46fa9c0..0b7064fd47 100644 --- a/src/main/java/server/maps/MapleMap.java +++ b/src/main/java/server/maps/MapleMap.java @@ -1650,8 +1650,7 @@ public class MapleMap { objectRLock.lock(); try { for (Object ob : list) { - if (ob instanceof MapObject) { - MapObject mmo = (MapObject) ob; + if (ob instanceof MapObject mmo) { if (mapobjects.containsValue(mmo) && mmo.getType() == MapObjectType.REACTOR) { listObjects.add(mmo); diff --git a/src/main/java/tools/ArrayMap.java b/src/main/java/tools/ArrayMap.java index a2f20468c1..a224b3059d 100644 --- a/src/main/java/tools/ArrayMap.java +++ b/src/main/java/tools/ArrayMap.java @@ -53,11 +53,10 @@ public class ArrayMap extends AbstractMap { @Override public boolean equals(Object o) { - if (!(o instanceof Map.Entry)) { - return false; + if (o instanceof Map.Entry e) { + return (key == null ? e.getKey() == null : key.equals(e.getKey())) && (value == null ? e.getValue() == null : value.equals(e.getValue())); } - Map.Entry e = (Map.Entry) o; - return (key == null ? e.getKey() == null : key.equals(e.getKey())) && (value == null ? e.getValue() == null : value.equals(e.getValue())); + return false; } @Override From 0ef3e69638be9c29080e670a30072eccffe75fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Sun, 7 Aug 2022 21:51:10 +0700 Subject: [PATCH 5/9] Clean up code, replace switch and try-with-resource where possible. --- .../command/commands/gm3/FaceCommand.java | 2 +- .../manipulator/InventoryManipulator.java | 17 +- .../processor/npc/StorageProcessor.java | 34 +- .../processor/stat/AssignAPProcessor.java | 13 +- src/main/java/net/server/Server.java | 6 - .../channel/handlers/BBSOperationHandler.java | 22 +- .../server/channel/handlers/MTSHandler.java | 799 +++++++++--------- .../handlers/MobDamageMobFriendlyHandler.java | 24 +- .../channel/handlers/NPCShopHandler.java | 23 +- .../channel/handlers/QuestActionHandler.java | 27 +- .../handlers/login/CreateCharHandler.java | 12 +- .../java/scripting/map/MapScriptMethods.java | 21 +- src/main/java/server/CashShop.java | 20 +- .../server/SkillbookInformationProvider.java | 3 - src/main/java/server/events/gm/Snowball.java | 10 +- .../java/server/gachapon/GachaponItems.java | 10 +- .../server/partyquest/AriantColiseum.java | 16 +- .../java/server/partyquest/PartyQuest.java | 41 +- src/main/java/server/quest/Quest.java | 7 +- .../java/server/quest/QuestActionType.java | 37 +- .../server/quest/QuestRequirementType.java | 53 +- .../java/tools/mapletools/MobBookIndexer.java | 1 - 22 files changed, 609 insertions(+), 589 deletions(-) diff --git a/src/main/java/client/command/commands/gm3/FaceCommand.java b/src/main/java/client/command/commands/gm3/FaceCommand.java index ccf8e1bf45..2ceed1145c 100644 --- a/src/main/java/client/command/commands/gm3/FaceCommand.java +++ b/src/main/java/client/command/commands/gm3/FaceCommand.java @@ -61,7 +61,7 @@ public class FaceCommand extends Command { } Character victim = c.getChannelServer().getPlayerStorage().getCharacterByName(params[0]); - if (victim == null) { + if (victim != null) { victim.setFace(itemId); victim.updateSingleStat(Stat.FACE, itemId); victim.equipChanged(); diff --git a/src/main/java/client/inventory/manipulator/InventoryManipulator.java b/src/main/java/client/inventory/manipulator/InventoryManipulator.java index 6ec0aa01d2..98f6fc3f19 100644 --- a/src/main/java/client/inventory/manipulator/InventoryManipulator.java +++ b/src/main/java/client/inventory/manipulator/InventoryManipulator.java @@ -538,7 +538,8 @@ public class InventoryManipulator { itemChanged = true; } - if (dst == -6) { // unequip the overall + switch (dst) { + case -6: // unequip the overall Item top = eqpdInv.getItem((short) -5); if (top != null && ItemConstants.isOverall(top.getItemId())) { if (eqpInv.isFull()) { @@ -548,7 +549,8 @@ public class InventoryManipulator { } unequip(c, (byte) -5, eqpInv.getNextFreeSlot()); } - } else if (dst == -5) { + break; + case -5: final Item bottom = eqpdInv.getItem((short) -6); if (bottom != null && ItemConstants.isOverall(source.getItemId())) { if (eqpInv.isFull()) { @@ -558,7 +560,8 @@ public class InventoryManipulator { } unequip(c, (byte) -6, eqpInv.getNextFreeSlot()); } - } else if (dst == -10) {// check if weapon is two-handed + break; + case -10: // check if weapon is two-handed Item weapon = eqpdInv.getItem((short) -11); if (weapon != null && ii.isTwoHanded(weapon.getItemId())) { if (eqpInv.isFull()) { @@ -568,7 +571,8 @@ public class InventoryManipulator { } unequip(c, (byte) -11, eqpInv.getNextFreeSlot()); } - } else if (dst == -11) { + break; + case -11: Item shield = eqpdInv.getItem((short) -10); if (shield != null && ii.isTwoHanded(source.getItemId())) { if (eqpInv.isFull()) { @@ -578,11 +582,12 @@ public class InventoryManipulator { } unequip(c, (byte) -10, eqpInv.getNextFreeSlot()); } - } - if (dst == -18) { + break; + case -18: if (chr.getMount() != null) { chr.getMount().setItemId(source.getItemId()); } + break; } //1112413, 1112414, 1112405 (Lilin's Ring) diff --git a/src/main/java/client/processor/npc/StorageProcessor.java b/src/main/java/client/processor/npc/StorageProcessor.java index afe48242ea..bd7f4333a0 100644 --- a/src/main/java/client/processor/npc/StorageProcessor.java +++ b/src/main/java/client/processor/npc/StorageProcessor.java @@ -60,7 +60,8 @@ public class StorageProcessor { if (c.tryacquireClient()) { try { - if (mode == 4) { // take out + switch (mode) { + case 4: { // take out byte type = p.readByte(); byte slot = p.readByte(); if (slot < 0 || slot > storage.getSlots()) { // removal starts at zero @@ -104,14 +105,17 @@ public class StorageProcessor { c.sendPacket(PacketCreator.getStorageError((byte) 0x0A)); } } - } else if (mode == 5) { // store + break; + } + case 5: { // store short slot = p.readShort(); int itemId = p.readInt(); short quantity = p.readShort(); InventoryType invType = ItemConstants.getInventoryType(itemId); Inventory inv = chr.getInventory(invType); - if (slot < 1 || slot > inv.getSlotLimit()) { //player inv starts at one - AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with storage."); + if (slot < 1 || slot > inv.getSlotLimit()) { // player inv starts at one + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), + c.getPlayer().getName() + " tried to packet edit with storage."); log.warn("Chr {} tried to store item at slot {}", c.getPlayer().getName(), slot); c.disconnect(true, false); return; @@ -124,17 +128,17 @@ public class StorageProcessor { c.sendPacket(PacketCreator.getStorageError((byte) 0x11)); return; } - int storeFee = storage.getStoreFee(); if (chr.getMeso() < storeFee) { c.sendPacket(PacketCreator.getStorageError((byte) 0x0B)); } else { Item item; - inv.lockInventory(); // thanks imbee for pointing a dupe within storage + inv.lockInventory(); // thanks imbee for pointing a dupe within storage try { item = inv.getItem(slot); - if (item != null && item.getItemId() == itemId && (item.getQuantity() >= quantity || ItemConstants.isRechargeable(itemId))) { + if (item != null && item.getItemId() == itemId + && (item.getQuantity() >= quantity || ItemConstants.isRechargeable(itemId))) { if (ItemId.isWeddingRing(itemId) || ItemId.isWeddingToken(itemId)) { c.sendPacket(PacketCreator.enableActions()); return; @@ -150,7 +154,7 @@ public class StorageProcessor { return; } - item = item.copy(); // thanks Robin Schulz & BHB88 for noticing a inventory glitch when storing items + item = item.copy(); // thanks Robin Schulz & BHB88 for noticing a inventory glitch when storing items } finally { inv.unlockInventory(); } @@ -160,19 +164,22 @@ public class StorageProcessor { KarmaManipulator.toggleKarmaFlagToUntradeable(item); item.setQuantity(quantity); - storage.store(item); // inside a critical section, "!(storage.isFull())" is still in effect... + storage.store(item); // inside a critical section, "!(storage.isFull())" is still in effect... chr.setUsedStorage(); String itemName = ii.getName(item.getItemId()); log.debug("Chr {} stored {}x {} ({})", c.getPlayer().getName(), item.getQuantity(), itemName, item.getItemId()); storage.sendStored(c, ItemConstants.getInventoryType(itemId)); } - } else if (mode == 6) { // arrange items + break; + } + case 6: // arrange items if (YamlConfig.config.server.USE_STORAGE_ITEM_SORT) { storage.arrangeItems(c); } c.sendPacket(PacketCreator.enableActions()); - } else if (mode == 7) { // meso + break; + case 7: { // meso int meso = p.readInt(); int storageMesos = storage.getMeso(); int playerMesos = chr.getMeso(); @@ -199,8 +206,11 @@ public class StorageProcessor { c.sendPacket(PacketCreator.enableActions()); return; } - } else if (mode == 8) {// close... unless the player decides to enter cash shop! + break; + } + case 8: // close... unless the player decides to enter cash shop! storage.close(); + break; } } finally { c.releaseClient(); diff --git a/src/main/java/client/processor/stat/AssignAPProcessor.java b/src/main/java/client/processor/stat/AssignAPProcessor.java index 7c54289204..8f33ac3b55 100644 --- a/src/main/java/client/processor/stat/AssignAPProcessor.java +++ b/src/main/java/client/processor/stat/AssignAPProcessor.java @@ -418,7 +418,8 @@ public class AssignAPProcessor { } int newVal = 0; - if (type.equals(Stat.STR)) { + switch (type) { + case STR: newVal = statUpdate[0] + gain; if (newVal > YamlConfig.config.server.MAX_AP) { statGain[0] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); @@ -427,7 +428,8 @@ public class AssignAPProcessor { statGain[0] += gain; statUpdate[0] = newVal; } - } else if (type.equals(Stat.INT)) { + break; + case INT: newVal = statUpdate[3] + gain; if (newVal > YamlConfig.config.server.MAX_AP) { statGain[3] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); @@ -436,7 +438,8 @@ public class AssignAPProcessor { statGain[3] += gain; statUpdate[3] = newVal; } - } else if (type.equals(Stat.LUK)) { + break; + case LUK: newVal = statUpdate[2] + gain; if (newVal > YamlConfig.config.server.MAX_AP) { statGain[2] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); @@ -445,7 +448,8 @@ public class AssignAPProcessor { statGain[2] += gain; statUpdate[2] = newVal; } - } else if (type.equals(Stat.DEX)) { + break; + case DEX: newVal = statUpdate[1] + gain; if (newVal > YamlConfig.config.server.MAX_AP) { statGain[1] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); @@ -454,6 +458,7 @@ public class AssignAPProcessor { statGain[1] += gain; statUpdate[1] = newVal; } + break; } if (newVal > YamlConfig.config.server.MAX_AP) { diff --git a/src/main/java/net/server/Server.java b/src/main/java/net/server/Server.java index 9b3aff1389..59f310f6b1 100644 --- a/src/main/java/net/server/Server.java +++ b/src/main/java/net/server/Server.java @@ -1934,13 +1934,7 @@ public class Server { new Thread(() -> System.exit(0)).start(); } else { log.info("Restarting the server..."); - try { - instance.finalize();//FUU I CAN AND IT'S FREE - } catch (Throwable ex) { - ex.printStackTrace(); - } instance = null; - System.gc(); getInstance().init();//DID I DO EVERYTHING?! D: } } diff --git a/src/main/java/net/server/channel/handlers/BBSOperationHandler.java b/src/main/java/net/server/channel/handlers/BBSOperationHandler.java index b29e5b735f..b8b17ed0ed 100644 --- a/src/main/java/net/server/channel/handlers/BBSOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/BBSOperationHandler.java @@ -303,28 +303,24 @@ public final class BBSOperationHandler extends AbstractPacketHandler { try (Connection con = DatabaseConnection.getConnection()) { // TODO clean up this block and use try-with-resources - PreparedStatement ps2; try (PreparedStatement ps = con.prepareStatement("SELECT * FROM bbs_threads WHERE guildid = ? AND " + (bIsThreadIdLocal ? "local" : "") + "threadid = ?")) { ps.setInt(1, mc.getGuildId()); ps.setInt(2, threadid); ResultSet threadRS = ps.executeQuery(); if (!threadRS.next()) { - threadRS.close(); - ps.close(); return; } ResultSet repliesRS = null; - ps2 = null; - if (threadRS.getInt("replycount") >= 0) { - ps2 = con.prepareStatement("SELECT * FROM bbs_replies WHERE threadid = ?"); - ps2.setInt(1, !bIsThreadIdLocal ? threadid : threadRS.getInt("threadid")); - repliesRS = ps2.executeQuery(); + try (PreparedStatement ps2 = con.prepareStatement("SELECT * FROM bbs_replies WHERE threadid = ?")) { + if (threadRS.getInt("replycount") >= 0) { + ps2.setInt(1, !bIsThreadIdLocal ? threadid : threadRS.getInt("threadid")); + repliesRS = ps2.executeQuery(); + } + client.sendPacket(GuildPackets.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS)); } - client.sendPacket(GuildPackets.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS)); - repliesRS.close(); - } - if (ps2 != null) { - ps2.close(); + /* repliesRS.close(); + * Don't need because ResultSet will be closed + * when associated Statement close*/ } } catch (SQLException se) { log.error("Error displaying thread", se); diff --git a/src/main/java/net/server/channel/handlers/MTSHandler.java b/src/main/java/net/server/channel/handlers/MTSHandler.java index f9e788ae1d..32ed63e8fa 100644 --- a/src/main/java/net/server/channel/handlers/MTSHandler.java +++ b/src/main/java/net/server/channel/handlers/MTSHandler.java @@ -61,7 +61,8 @@ public final class MTSHandler extends AbstractPacketHandler { } if (p.available() > 0) { byte op = p.readByte(); - if (op == 2) { //put item up for sale + switch (op) { + case 2: { //put item up for sale byte itemtype = p.readByte(); int itemid = p.readInt(); p.readShort(); @@ -72,7 +73,7 @@ public final class MTSHandler extends AbstractPacketHandler { } else { stars = p.readShort(); } - p.readString(); //another useless thing (owner) + p.readString(); // another useless thing (owner) if (itemtype == 1) { p.skip(32); } else { @@ -108,26 +109,19 @@ public final class MTSHandler extends AbstractPacketHandler { InventoryType invType = ItemConstants.getInventoryType(itemid); Item i = c.getPlayer().getInventory(invType).getItem(slot).copy(); if (i != null && c.getPlayer().getMeso() >= 5000) { - Connection con = null; - try { - con = DatabaseConnection.getConnection(); - - PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE seller = ?"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE seller = ?");) { ps.setInt(1, c.getPlayer().getId()); ResultSet rs = ps.executeQuery(); if (rs.next()) { - if (rs.getInt(1) > 10) { //They have more than 10 items up for sale already! + if (rs.getInt(1) > 10) { // They have more than 10 items up for sale already! c.getPlayer().dropMessage(1, "You already have 10 items up for auction!"); c.sendPacket(getMTS(1, 0, 0)); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); - rs.close(); - ps.close(); return; } } - rs.close(); - ps.close(); Calendar calendar = Calendar.getInstance(); int year; int month; @@ -164,61 +158,62 @@ public final class MTSHandler extends AbstractPacketHandler { } if (!i.getInventoryType().equals(InventoryType.EQUIP)) { Item item = i; - ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, expiration, giftFrom, seller, price, owner, sellername, sell_ends) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - ps.setInt(1, 1); - ps.setInt(2, invType.getType()); - ps.setInt(3, item.getItemId()); - ps.setInt(4, quantity); - ps.setLong(5, item.getExpiration()); - ps.setString(6, item.getGiftFrom()); - ps.setInt(7, c.getPlayer().getId()); - ps.setInt(8, price); - ps.setString(9, item.getOwner()); - ps.setString(10, c.getPlayer().getName()); - ps.setString(11, date); + try (PreparedStatement pse = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, expiration, giftFrom, seller, price, owner, sellername, sell_ends) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) { + pse.setInt(1, 1); + pse.setInt(2, invType.getType()); + pse.setInt(3, item.getItemId()); + pse.setInt(4, quantity); + pse.setLong(5, item.getExpiration()); + pse.setString(6, item.getGiftFrom()); + pse.setInt(7, c.getPlayer().getId()); + pse.setInt(8, price); + pse.setString(9, item.getOwner()); + pse.setString(10, c.getPlayer().getName()); + pse.setString(11, date); + pse.executeUpdate(); + } } else { Equip equip = (Equip) i; - ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, expiration, giftFrom, seller, price, upgradeslots, level, str, dex, `int`, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, locked, owner, sellername, sell_ends, vicious, flag, itemexp, itemlevel, ringid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - ps.setInt(1, 1); - ps.setInt(2, invType.getType()); - ps.setInt(3, equip.getItemId()); - ps.setInt(4, quantity); - ps.setLong(5, equip.getExpiration()); - ps.setString(6, equip.getGiftFrom()); - ps.setInt(7, c.getPlayer().getId()); - ps.setInt(8, price); - ps.setInt(9, equip.getUpgradeSlots()); - ps.setInt(10, equip.getLevel()); - ps.setInt(11, equip.getStr()); - ps.setInt(12, equip.getDex()); - ps.setInt(13, equip.getInt()); - ps.setInt(14, equip.getLuk()); - ps.setInt(15, equip.getHp()); - ps.setInt(16, equip.getMp()); - ps.setInt(17, equip.getWatk()); - ps.setInt(18, equip.getMatk()); - ps.setInt(19, equip.getWdef()); - ps.setInt(20, equip.getMdef()); - ps.setInt(21, equip.getAcc()); - ps.setInt(22, equip.getAvoid()); - ps.setInt(23, equip.getHands()); - ps.setInt(24, equip.getSpeed()); - ps.setInt(25, equip.getJump()); - ps.setInt(26, 0); - ps.setString(27, equip.getOwner()); - ps.setString(28, c.getPlayer().getName()); - ps.setString(29, date); - ps.setInt(30, equip.getVicious()); - ps.setInt(31, equip.getFlag()); - ps.setInt(32, equip.getItemExp()); - ps.setByte(33, equip.getItemLevel()); // thanks Jefe for noticing missing itemlevel labels - ps.setInt(34, equip.getRingId()); + try (PreparedStatement pse = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, expiration, giftFrom, seller, price, upgradeslots, level, str, dex, `int`, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, locked, owner, sellername, sell_ends, vicious, flag, itemexp, itemlevel, ringid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) { + pse.setInt(1, 1); + pse.setInt(2, invType.getType()); + pse.setInt(3, equip.getItemId()); + pse.setInt(4, quantity); + pse.setLong(5, equip.getExpiration()); + pse.setString(6, equip.getGiftFrom()); + pse.setInt(7, c.getPlayer().getId()); + pse.setInt(8, price); + pse.setInt(9, equip.getUpgradeSlots()); + pse.setInt(10, equip.getLevel()); + pse.setInt(11, equip.getStr()); + pse.setInt(12, equip.getDex()); + pse.setInt(13, equip.getInt()); + pse.setInt(14, equip.getLuk()); + pse.setInt(15, equip.getHp()); + pse.setInt(16, equip.getMp()); + pse.setInt(17, equip.getWatk()); + pse.setInt(18, equip.getMatk()); + pse.setInt(19, equip.getWdef()); + pse.setInt(20, equip.getMdef()); + pse.setInt(21, equip.getAcc()); + pse.setInt(22, equip.getAvoid()); + pse.setInt(23, equip.getHands()); + pse.setInt(24, equip.getSpeed()); + pse.setInt(25, equip.getJump()); + pse.setInt(26, 0); + pse.setString(27, equip.getOwner()); + pse.setString(28, c.getPlayer().getName()); + pse.setString(29, date); + pse.setInt(30, equip.getVicious()); + pse.setInt(31, equip.getFlag()); + pse.setInt(32, equip.getItemExp()); + pse.setByte(33, equip.getItemLevel()); // thanks Jefe for noticing missing itemlevel labels + pse.setInt(34, equip.getRingId()); + pse.executeUpdate(); + } } - ps.executeUpdate(); - ps.close(); InventoryManipulator.removeFromSlot(c, invType, slot, quantity, false); - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -229,14 +224,18 @@ public final class MTSHandler extends AbstractPacketHandler { c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); } - } else if (op == 3) { //send offer for wanted item - } else if (op == 4) { //list wanted item + break; + } + case 3: //send offer for wanted item + break; + case 4: //list wanted item p.readInt(); p.readInt(); p.readInt(); p.readShort(); p.readString(); - } else if (op == 5) { //change page + break; + case 5: { //change page int tab = p.readInt(); int type = p.readInt(); int page = p.readInt(); @@ -254,7 +253,9 @@ public final class MTSHandler extends AbstractPacketHandler { c.enableCSActions(); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); - } else if (op == 6) { //search + break; + } + case 6: { //search int tab = p.readInt(); int type = p.readInt(); p.readInt(); @@ -270,102 +271,106 @@ public final class MTSHandler extends AbstractPacketHandler { c.sendPacket(PacketCreator.showMTSCash(c.getPlayer())); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); - } else if (op == 7) { //cancel sale - int id = p.readInt(); //id of the item - Connection con = null; - try { - con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("UPDATE mts_items SET transfer = 1 WHERE id = ? AND seller = ?"); - ps.setInt(1, id); - ps.setInt(2, c.getPlayer().getId()); - ps.executeUpdate(); - ps.close(); - ps = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?"); - ps.setInt(1, id); - ps.executeUpdate(); - ps.close(); - con.close(); + break; + } + case 7: { //cancel sale + int id = p.readInt(); // id of the item + try (Connection con = DatabaseConnection.getConnection()) { + try (PreparedStatement ps = con.prepareStatement("UPDATE mts_items SET transfer = 1 WHERE id = ? AND seller = ?")) { + ps.setInt(1, id); + ps.setInt(2, c.getPlayer().getId()); + ps.executeUpdate(); + } + + try (PreparedStatement ps = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?")) { + ps.setInt(1, id); + ps.executeUpdate(); + } } catch (SQLException e) { e.printStackTrace(); } c.enableCSActions(); - c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); + c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), + c.getPlayer().getCurrentPage())); c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - } else if (op == 8) { //transfer item from transfer inv. - int id = p.readInt(); //id of the item - Connection con = null; - PreparedStatement ps; - ResultSet rs; - try { - con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 1 AND id= ? ORDER BY id DESC"); - ps.setInt(1, c.getPlayer().getId()); - ps.setInt(2, id); - rs = ps.executeQuery(); - if (rs.next()) { - Item i; - if (rs.getInt("type") != 1) { - Item ii = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); - ii.setOwner(rs.getString("owner")); - ii.setPosition(c.getPlayer().getInventory(ItemConstants.getInventoryType(rs.getInt("itemid"))).getNextFreeSlot()); - i = ii.copy(); - } else { - Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); - equip.setOwner(rs.getString("owner")); - equip.setQuantity((short) 1); - equip.setAcc((short) rs.getInt("acc")); - equip.setAvoid((short) rs.getInt("avoid")); - equip.setDex((short) rs.getInt("dex")); - equip.setHands((short) rs.getInt("hands")); - equip.setHp((short) rs.getInt("hp")); - equip.setInt((short) rs.getInt("int")); - equip.setJump((short) rs.getInt("jump")); - equip.setLuk((short) rs.getInt("luk")); - equip.setMatk((short) rs.getInt("matk")); - equip.setMdef((short) rs.getInt("mdef")); - equip.setMp((short) rs.getInt("mp")); - equip.setSpeed((short) rs.getInt("speed")); - equip.setStr((short) rs.getInt("str")); - equip.setWatk((short) rs.getInt("watk")); - equip.setWdef((short) rs.getInt("wdef")); - equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); - equip.setLevel((byte) rs.getInt("level")); - equip.setItemLevel(rs.getByte("itemlevel")); - equip.setItemExp(rs.getInt("itemexp")); - equip.setRingId(rs.getInt("ringid")); - equip.setVicious((byte) rs.getInt("vicious")); - equip.setFlag((short) rs.getInt("flag")); - equip.setExpiration(rs.getLong("expiration")); - equip.setGiftFrom(rs.getString("giftFrom")); - equip.setPosition(c.getPlayer().getInventory(ItemConstants.getInventoryType(rs.getInt("itemid"))).getNextFreeSlot()); - i = equip.copy(); + break; + } + case 8: { // transfer item from transfer inv. + int id = p.readInt(); // id of the item + try (Connection con = DatabaseConnection.getConnection()) { + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 1 AND id= ? ORDER BY id DESC")) { + ps.setInt(1, c.getPlayer().getId()); + ps.setInt(2, id); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + Item i; + if (rs.getInt("type") != 1) { + Item ii = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + ii.setOwner(rs.getString("owner")); + ii.setPosition( + c.getPlayer().getInventory(ItemConstants.getInventoryType(rs.getInt("itemid"))) + .getNextFreeSlot()); + i = ii.copy(); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); + equip.setVicious((byte) rs.getInt("vicious")); + equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); + equip.setPosition( + c.getPlayer().getInventory(ItemConstants.getInventoryType(rs.getInt("itemid"))) + .getNextFreeSlot()); + i = equip.copy(); + } + try (PreparedStatement pse = con.prepareStatement( + "DELETE FROM mts_items WHERE id = ? AND seller = ? AND transfer = 1")) { + pse.setInt(1, id); + pse.setInt(2, c.getPlayer().getId()); + pse.executeUpdate(); + } + InventoryManipulator.addFromDrop(c, i, false); + c.enableCSActions(); + c.sendPacket(getCart(c.getPlayer().getId())); + c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), + c.getPlayer().getCurrentPage())); + c.sendPacket(PacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition())); + c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); } - try (PreparedStatement pse = con.prepareStatement("DELETE FROM mts_items WHERE id = ? AND seller = ? AND transfer = 1")) { - pse.setInt(1, id); - pse.setInt(2, c.getPlayer().getId()); - pse.executeUpdate(); - } - InventoryManipulator.addFromDrop(c, i, false); - c.enableCSActions(); - c.sendPacket(getCart(c.getPlayer().getId())); - c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); - c.sendPacket(PacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition())); - c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + // rs.close(); Closing statement will also close related resultset } - rs.close(); - ps.close(); - con.close(); } catch (SQLException e) { log.error("MTS Transfer error", e); } - } else if (op == 9) { //add to cart - int id = p.readInt(); //id of the item - Connection con; - try { - con = DatabaseConnection.getConnection(); + break; + } + case 9: { //add to cart + int id = p.readInt(); // id of the item + try (Connection con = DatabaseConnection.getConnection()) { try (PreparedStatement ps1 = con.prepareStatement("SELECT id FROM mts_items WHERE id = ? AND seller <> ?")) { - ps1.setInt(1, id); //Dummy query, prevents adding to cart self owned items + ps1.setInt(1, id); // Dummy query, prevents adding to cart self owned items ps1.setInt(2, c.getPlayer().getId()); try (ResultSet rs1 = ps1.executeQuery()) { if (rs1.next()) { @@ -384,7 +389,6 @@ public final class MTSHandler extends AbstractPacketHandler { } } } - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -393,17 +397,16 @@ public final class MTSHandler extends AbstractPacketHandler { c.sendPacket(PacketCreator.enableActions()); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); - } else if (op == 10) { //delete from cart - int id = p.readInt(); //id of the item - Connection con = null; - try { - con = DatabaseConnection.getConnection(); + break; + } + case 10: { //delete from cart + int id = p.readInt(); // id of the item + try (Connection con = DatabaseConnection.getConnection()) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ? AND cid = ?")) { ps.setInt(1, id); ps.setInt(2, c.getPlayer().getId()); ps.executeUpdate(); } - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -411,22 +414,23 @@ public final class MTSHandler extends AbstractPacketHandler { c.enableCSActions(); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); - } else if (op == 12) { //put item up for auction - } else if (op == 13) { //cancel wanted cart thing - } else if (op == 14) { //buy auction item now - } else if (op == 16) { //buy - int id = p.readInt(); //id of the item - Connection con = null; - PreparedStatement ps; - ResultSet rs; - try { - con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT * FROM mts_items WHERE id = ? ORDER BY id DESC"); + break; + } + case 12: //put item up for auction + break; + case 13: //cancel wanted cart thing + break; + case 14: //buy auction item now + break; + case 16: { //buy + int id = p.readInt(); // id of the item + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE id = ? ORDER BY id DESC")) { ps.setInt(1, id); - rs = ps.executeQuery(); + ResultSet rs = ps.executeQuery(); if (rs.next()) { - int price = rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1); //taxes - if (c.getPlayer().getCashShop().getCash(4) >= price) { //FIX + int price = rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1); // taxes + if (c.getPlayer().getCashShop().getCash(4) >= price) { // FIX boolean alwaysnull = true; for (Channel cserv : Server.getInstance().getAllChannels()) { Character victim = cserv.getPlayerStorage().getCharacterById(rs.getInt("seller")); @@ -436,10 +440,9 @@ public final class MTSHandler extends AbstractPacketHandler { } } if (alwaysnull) { - ResultSet rse; try (PreparedStatement pse = con.prepareStatement("SELECT accountid FROM characters WHERE id = ?")) { pse.setInt(1, rs.getInt("seller")); - rse = pse.executeQuery(); + ResultSet rse = pse.executeQuery(); if (rse.next()) { try (PreparedStatement psee = con.prepareStatement("UPDATE accounts SET nxPrepaid = nxPrepaid + ? WHERE id = ?")) { psee.setInt(1, rs.getInt("price")); @@ -448,20 +451,19 @@ public final class MTSHandler extends AbstractPacketHandler { } } } - rse.close(); } - PreparedStatement pse = con.prepareStatement("UPDATE mts_items SET seller = ?, transfer = 1 WHERE id = ?"); - pse.setInt(1, c.getPlayer().getId()); - pse.setInt(2, id); - pse.executeUpdate(); - pse.close(); - pse = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?"); - pse.setInt(1, id); - pse.executeUpdate(); - pse.close(); + try (PreparedStatement pse = con.prepareStatement("UPDATE mts_items SET seller = ?, transfer = 1 WHERE id = ?")) { + pse.setInt(1, c.getPlayer().getId()); + pse.setInt(2, id); + pse.executeUpdate(); + } + try (PreparedStatement pse = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?")) { + pse.setInt(1, id); + pse.executeUpdate(); + } c.getPlayer().getCashShop().gainCash(4, -price); c.enableCSActions(); - c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); + c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(),c.getPlayer().getCurrentPage())); c.sendPacket(PacketCreator.MTSConfirmBuy()); c.sendPacket(PacketCreator.showMTSCash(c.getPlayer())); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); @@ -471,23 +473,18 @@ public final class MTSHandler extends AbstractPacketHandler { c.sendPacket(PacketCreator.MTSFailBuy()); } } - rs.close(); - ps.close(); - con.close(); } catch (SQLException e) { e.printStackTrace(); c.sendPacket(PacketCreator.MTSFailBuy()); } - } else if (op == 17) { //buy from cart - int id = p.readInt(); //id of the item - Connection con = null; - PreparedStatement ps; - ResultSet rs; - try { - con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT * FROM mts_items WHERE id = ? ORDER BY id DESC"); + break; + } + case 17: { //buy from cart + int id = p.readInt(); // id of the item + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE id = ? ORDER BY id DESC")) { ps.setInt(1, id); - rs = ps.executeQuery(); + ResultSet rs = ps.executeQuery(); if (rs.next()) { int price = rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1); if (c.getPlayer().getCashShop().getCash(4) >= price) { @@ -496,10 +493,9 @@ public final class MTSHandler extends AbstractPacketHandler { if (victim != null) { victim.getCashShop().gainCash(4, rs.getInt("price")); } else { - ResultSet rse; try (PreparedStatement pse = con.prepareStatement("SELECT accountid FROM characters WHERE id = ?")) { pse.setInt(1, rs.getInt("seller")); - rse = pse.executeQuery(); + ResultSet rse = pse.executeQuery(); if (rse.next()) { try (PreparedStatement psee = con.prepareStatement("UPDATE accounts SET nxPrepaid = nxPrepaid + ? WHERE id = ?")) { psee.setInt(1, rs.getInt("price")); @@ -508,18 +504,17 @@ public final class MTSHandler extends AbstractPacketHandler { } } } - rse.close(); } } - PreparedStatement pse = con.prepareStatement("UPDATE mts_items SET seller = ?, transfer = 1 WHERE id = ?"); - pse.setInt(1, c.getPlayer().getId()); - pse.setInt(2, id); - pse.executeUpdate(); - pse.close(); - pse = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?"); - pse.setInt(1, id); - pse.executeUpdate(); - pse.close(); + try (PreparedStatement pse = con.prepareStatement("UPDATE mts_items SET seller = ?, transfer = 1 WHERE id = ?")) { + pse.setInt(1, c.getPlayer().getId()); + pse.setInt(2, id); + pse.executeUpdate(); + } + try (PreparedStatement pse = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?")) { + pse.setInt(1, id); + pse.executeUpdate(); + } c.getPlayer().getCashShop().gainCash(4, -price); c.sendPacket(getCart(c.getPlayer().getId())); c.enableCSActions(); @@ -531,15 +526,15 @@ public final class MTSHandler extends AbstractPacketHandler { c.sendPacket(PacketCreator.MTSFailBuy()); } } - rs.close(); - ps.close(); - con.close(); } catch (SQLException e) { e.printStackTrace(); c.sendPacket(PacketCreator.MTSFailBuy()); } - } else { + break; + } + default: log.warn("Unhandled OP (MTS): {}, packet: {}", op, p); + break; } } else { c.sendPacket(PacketCreator.showMTSCash(c.getPlayer())); @@ -548,14 +543,10 @@ public final class MTSHandler extends AbstractPacketHandler { public List getNotYetSold(int cid) { List items = new ArrayList<>(); - Connection con = null; - PreparedStatement ps; - ResultSet rs; - try { - con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 0 ORDER BY id DESC"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 0 ORDER BY id DESC")) { ps.setInt(1, cid); - rs = ps.executeQuery(); + ResultSet rs = ps.executeQuery(); while (rs.next()) { if (rs.getInt("type") != 1) { Item i = new Item(rs.getInt("itemid"), (byte) 0, (short) rs.getInt("quantity")); @@ -592,9 +583,6 @@ public final class MTSHandler extends AbstractPacketHandler { items.add(new MTSItemInfo(equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } - rs.close(); - ps.close(); - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -603,71 +591,66 @@ public final class MTSHandler extends AbstractPacketHandler { public Packet getCart(int cid) { List items = new ArrayList<>(); - Connection con = null; - PreparedStatement ps; - ResultSet rs; int pages = 0; - try { - con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT * FROM mts_cart WHERE cid = ? ORDER BY id DESC"); - ps.setInt(1, cid); - rs = ps.executeQuery(); - while (rs.next()) { - try (PreparedStatement pse = con.prepareStatement("SELECT * FROM mts_items WHERE id = ?")) { - pse.setInt(1, rs.getInt("itemid")); - ResultSet rse = pse.executeQuery(); - if (rse.next()) { - if (rse.getInt("type") != 1) { - Item i = new Item(rse.getInt("itemid"), (short) 0, (short) rse.getInt("quantity")); - i.setOwner(rse.getString("owner")); - items.add(new MTSItemInfo(i, rse.getInt("price"), rse.getInt("id"), rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); - } else { - Equip equip = new Equip(rse.getInt("itemid"), (byte) rse.getInt("position"), -1); - equip.setOwner(rse.getString("owner")); - equip.setQuantity((short) 1); - equip.setAcc((short) rse.getInt("acc")); - equip.setAvoid((short) rse.getInt("avoid")); - equip.setDex((short) rse.getInt("dex")); - equip.setHands((short) rse.getInt("hands")); - equip.setHp((short) rse.getInt("hp")); - equip.setInt((short) rse.getInt("int")); - equip.setJump((short) rse.getInt("jump")); - equip.setVicious((short) rse.getInt("vicious")); - equip.setLuk((short) rse.getInt("luk")); - equip.setMatk((short) rse.getInt("matk")); - equip.setMdef((short) rse.getInt("mdef")); - equip.setMp((short) rse.getInt("mp")); - equip.setSpeed((short) rse.getInt("speed")); - equip.setStr((short) rse.getInt("str")); - equip.setWatk((short) rse.getInt("watk")); - equip.setWdef((short) rse.getInt("wdef")); - equip.setUpgradeSlots((byte) rse.getInt("upgradeslots")); - equip.setLevel((byte) rse.getInt("level")); - equip.setItemLevel(rs.getByte("itemlevel")); - equip.setItemExp(rs.getInt("itemexp")); - equip.setRingId(rs.getInt("ringid")); - equip.setFlag((short) rs.getInt("flag")); - equip.setExpiration(rs.getLong("expiration")); - equip.setGiftFrom(rs.getString("giftFrom")); - items.add(new MTSItemInfo(equip, rse.getInt("price"), rse.getInt("id"), rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); + try (Connection con = DatabaseConnection.getConnection()) { + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_cart WHERE cid = ? ORDER BY id DESC")) { + ps.setInt(1, cid); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + try (PreparedStatement pse = con.prepareStatement("SELECT * FROM mts_items WHERE id = ?")) { + pse.setInt(1, rs.getInt("itemid")); + ResultSet rse = pse.executeQuery(); + if (rse.next()) { + if (rse.getInt("type") != 1) { + Item i = new Item(rse.getInt("itemid"), (short) 0, (short) rse.getInt("quantity")); + i.setOwner(rse.getString("owner")); + items.add(new MTSItemInfo(i, rse.getInt("price"), rse.getInt("id"), + rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); + } else { + Equip equip = new Equip(rse.getInt("itemid"), (byte) rse.getInt("position"), -1); + equip.setOwner(rse.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rse.getInt("acc")); + equip.setAvoid((short) rse.getInt("avoid")); + equip.setDex((short) rse.getInt("dex")); + equip.setHands((short) rse.getInt("hands")); + equip.setHp((short) rse.getInt("hp")); + equip.setInt((short) rse.getInt("int")); + equip.setJump((short) rse.getInt("jump")); + equip.setVicious((short) rse.getInt("vicious")); + equip.setLuk((short) rse.getInt("luk")); + equip.setMatk((short) rse.getInt("matk")); + equip.setMdef((short) rse.getInt("mdef")); + equip.setMp((short) rse.getInt("mp")); + equip.setSpeed((short) rse.getInt("speed")); + equip.setStr((short) rse.getInt("str")); + equip.setWatk((short) rse.getInt("watk")); + equip.setWdef((short) rse.getInt("wdef")); + equip.setUpgradeSlots((byte) rse.getInt("upgradeslots")); + equip.setLevel((byte) rse.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); + equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); + items.add(new MTSItemInfo(equip, rse.getInt("price"), rse.getInt("id"), + rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); + } } } } } - rs.close(); - ps.close(); - ps = con.prepareStatement("SELECT COUNT(*) FROM mts_cart WHERE cid = ?"); - ps.setInt(1, cid); - rs = ps.executeQuery(); - if (rs.next()) { - pages = rs.getInt(1) / 16; - if (rs.getInt(1) % 16 > 0) { - pages += 1; + try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_cart WHERE cid = ?")) { + ps.setInt(1, cid); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + pages = rs.getInt(1) / 16; + if (rs.getInt(1) % 16 > 0) { + pages += 1; + } } } - rs.close(); - ps.close(); - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -676,14 +659,10 @@ public final class MTSHandler extends AbstractPacketHandler { public List getTransfer(int cid) { List items = new ArrayList<>(); - Connection con = null; - PreparedStatement ps; - ResultSet rs; - try { - con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT * FROM mts_items WHERE transfer = 1 AND seller = ? ORDER BY id DESC"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE transfer = 1 AND seller = ? ORDER BY id DESC")) { ps.setInt(1, cid); - rs = ps.executeQuery(); + ResultSet rs = ps.executeQuery(); while (rs.next()) { if (rs.getInt("type") != 1) { Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); @@ -720,9 +699,6 @@ public final class MTSHandler extends AbstractPacketHandler { items.add(new MTSItemInfo(equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } - rs.close(); - ps.close(); - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -731,78 +707,74 @@ public final class MTSHandler extends AbstractPacketHandler { private static Packet getMTS(int tab, int type, int page) { List items = new ArrayList<>(); - Connection con = null; - PreparedStatement ps; - ResultSet rs; int pages = 0; - try { - con = DatabaseConnection.getConnection(); + try (Connection con = DatabaseConnection.getConnection()) { + String sql; if (type != 0) { - ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? AND type = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + sql = "SELECT * FROM mts_items WHERE tab = ? AND type = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"; } else { - ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + sql = "SELECT * FROM mts_items WHERE tab = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"; } - ps.setInt(1, tab); - if (type != 0) { - ps.setInt(2, type); - ps.setInt(3, page * 16); - } else { - ps.setInt(2, page * 16); - } - rs = ps.executeQuery(); - while (rs.next()) { - if (rs.getInt("type") != 1) { - Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); - i.setOwner(rs.getString("owner")); - items.add(new MTSItemInfo(i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + try (PreparedStatement ps = con.prepareStatement(sql)) { + ps.setInt(1, tab); + if (type != 0) { + ps.setInt(2, type); + ps.setInt(3, page * 16); } else { - Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); - equip.setOwner(rs.getString("owner")); - equip.setQuantity((short) 1); - equip.setAcc((short) rs.getInt("acc")); - equip.setAvoid((short) rs.getInt("avoid")); - equip.setDex((short) rs.getInt("dex")); - equip.setHands((short) rs.getInt("hands")); - equip.setHp((short) rs.getInt("hp")); - equip.setInt((short) rs.getInt("int")); - equip.setJump((short) rs.getInt("jump")); - equip.setVicious((short) rs.getInt("vicious")); - equip.setLuk((short) rs.getInt("luk")); - equip.setMatk((short) rs.getInt("matk")); - equip.setMdef((short) rs.getInt("mdef")); - equip.setMp((short) rs.getInt("mp")); - equip.setSpeed((short) rs.getInt("speed")); - equip.setStr((short) rs.getInt("str")); - equip.setWatk((short) rs.getInt("watk")); - equip.setWdef((short) rs.getInt("wdef")); - equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); - equip.setLevel((byte) rs.getInt("level")); - equip.setItemLevel(rs.getByte("itemlevel")); - equip.setItemExp(rs.getInt("itemexp")); - equip.setRingId(rs.getInt("ringid")); - equip.setFlag((short) rs.getInt("flag")); - equip.setExpiration(rs.getLong("expiration")); - equip.setGiftFrom(rs.getString("giftFrom")); - items.add(new MTSItemInfo(equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + ps.setInt(2, page * 16); + } + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo(i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), + rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); + equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); + items.add(new MTSItemInfo(equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } } } - rs.close(); - ps.close(); - ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + (type != 0 ? "AND type = ?" : "") + "AND transfer = 0"); - ps.setInt(1, tab); - if (type != 0) { - ps.setInt(2, type); - } - rs = ps.executeQuery(); - if (rs.next()) { - pages = rs.getInt(1) / 16; - if (rs.getInt(1) % 16 > 0) { - pages++; + try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + (type != 0 ? "AND type = ?" : "") + "AND transfer = 0")) { + ps.setInt(1, tab); + if (type != 0) { + ps.setInt(2, type); + } + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + pages = rs.getInt(1) / 16; + if (rs.getInt(1) % 16 > 0) { + pages++; + } } } - rs.close(); - ps.close(); - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -830,80 +802,75 @@ public final class MTSHandler extends AbstractPacketHandler { } else { listaitems = " AND sellername LIKE CONCAT('%','" + search + "', '%')"; } - Connection con = null; - PreparedStatement ps; - ResultSet rs; int pages = 0; - try { - con = DatabaseConnection.getConnection(); + try (Connection con = DatabaseConnection.getConnection()){ + String sql; if (type != 0) { - ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? " + listaitems + " AND type = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + sql = "SELECT * FROM mts_items WHERE tab = ? " + listaitems + " AND type = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"; } else { - ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? " + listaitems + " AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + sql = "SELECT * FROM mts_items WHERE tab = ? " + listaitems + " AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"; } - ps.setInt(1, tab); - if (type != 0) { - ps.setInt(2, type); - ps.setInt(3, page * 16); - } else { - ps.setInt(2, page * 16); - } - rs = ps.executeQuery(); - while (rs.next()) { - if (rs.getInt("type") != 1) { - Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); - i.setOwner(rs.getString("owner")); - items.add(new MTSItemInfo(i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); - } else { - Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); - equip.setOwner(rs.getString("owner")); - equip.setQuantity((short) 1); - equip.setAcc((short) rs.getInt("acc")); - equip.setAvoid((short) rs.getInt("avoid")); - equip.setDex((short) rs.getInt("dex")); - equip.setHands((short) rs.getInt("hands")); - equip.setHp((short) rs.getInt("hp")); - equip.setInt((short) rs.getInt("int")); - equip.setJump((short) rs.getInt("jump")); - equip.setVicious((short) rs.getInt("vicious")); - equip.setLuk((short) rs.getInt("luk")); - equip.setMatk((short) rs.getInt("matk")); - equip.setMdef((short) rs.getInt("mdef")); - equip.setMp((short) rs.getInt("mp")); - equip.setSpeed((short) rs.getInt("speed")); - equip.setStr((short) rs.getInt("str")); - equip.setWatk((short) rs.getInt("watk")); - equip.setWdef((short) rs.getInt("wdef")); - equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); - equip.setLevel((byte) rs.getInt("level")); - equip.setItemLevel(rs.getByte("itemlevel")); - equip.setItemExp(rs.getInt("itemexp")); - equip.setRingId(rs.getInt("ringid")); - equip.setFlag((short) rs.getInt("flag")); - equip.setExpiration(rs.getLong("expiration")); - equip.setGiftFrom(rs.getString("giftFrom")); - items.add(new MTSItemInfo(equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); - } - } - rs.close(); - ps.close(); - if (type == 0) { - ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + listaitems + " AND transfer = 0"); + try (PreparedStatement ps = con.prepareStatement(sql)) { ps.setInt(1, tab); if (type != 0) { ps.setInt(2, type); + ps.setInt(3, page * 16); + } else { + ps.setInt(2, page * 16); } - rs = ps.executeQuery(); - if (rs.next()) { - pages = rs.getInt(1) / 16; - if (rs.getInt(1) % 16 > 0) { - pages++; + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo(i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); + equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); + items.add(new MTSItemInfo(equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + } + if (type == 0) { + try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + listaitems + " AND transfer = 0")) { + ps.setInt(1, tab); + if (type != 0) { + ps.setInt(2, type); + } + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + pages = rs.getInt(1) / 16; + if (rs.getInt(1) % 16 > 0) { + pages++; + } } } - rs.close(); - ps.close(); } - con.close(); } catch (SQLException e) { e.printStackTrace(); } diff --git a/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java b/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java index 5c72d00d9d..f65e705663 100644 --- a/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java +++ b/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java @@ -52,22 +52,30 @@ public final class MobDamageMobFriendlyHandler extends AbstractPacketHandler { int damage = Randomizer.nextInt(((monster.getMaxHp() / 13 + monster.getPADamage() * 10)) * 2 + 500) / 10; // Formula planned by Beng. if (monster.getHp() - damage < 1) { // friendly dies - if (monster.getId() == MobId.WATCH_HOG) { + switch (monster.getId()) { + case MobId.WATCH_HOG: map.broadcastMessage(PacketCreator.serverNotice(6, "The Watch Hog has been injured by the aliens. Better luck next time...")); - } else if (monster.getId() == MobId.MOON_BUNNY) { //moon bunny + break; + case MobId.MOON_BUNNY: //moon bunny map.broadcastMessage(PacketCreator.serverNotice(6, "The Moon Bunny went home because he was sick.")); - } else if (monster.getId() == MobId.TYLUS) { //tylus + break; + case MobId.TYLUS: //tylus map.broadcastMessage(PacketCreator.serverNotice(6, "Tylus has fallen by the overwhelming forces of the ambush.")); - } else if (monster.getId() == MobId.JULIET) { //juliet + break; + case MobId.JULIET: //juliet map.broadcastMessage(PacketCreator.serverNotice(6, "Juliet has fainted in the middle of the combat.")); - } else if (monster.getId() == MobId.ROMEO) { //romeo + break; + case MobId.ROMEO: //romeo map.broadcastMessage(PacketCreator.serverNotice(6, "Romeo has fainted in the middle of the combat.")); - } else if (monster.getId() == MobId.GIANT_SNOWMAN_LV1_EASY || monster.getId() == MobId.GIANT_SNOWMAN_LV1_MEDIUM || monster.getId() == MobId.GIANT_SNOWMAN_LV1_HARD) { + break; + case MobId.GIANT_SNOWMAN_LV1_EASY, MobId.GIANT_SNOWMAN_LV1_MEDIUM, MobId.GIANT_SNOWMAN_LV1_HARD: map.broadcastMessage(PacketCreator.serverNotice(6, "The Snowman has melted on the heat of the battle.")); - } else if (monster.getId() == MobId.DELLI) { //delli + break; + case MobId.DELLI: //delli map.broadcastMessage(PacketCreator.serverNotice(6, "Delli vanished after the ambush, sheets still laying on the ground...")); + break; } - + map.killFriendlies(monster); } else { EventInstanceManager eim = map.getEventInstance(); diff --git a/src/main/java/net/server/channel/handlers/NPCShopHandler.java b/src/main/java/net/server/channel/handlers/NPCShopHandler.java index 1b9ab4f6d1..6d92169d74 100644 --- a/src/main/java/net/server/channel/handlers/NPCShopHandler.java +++ b/src/main/java/net/server/channel/handlers/NPCShopHandler.java @@ -38,27 +38,38 @@ public final class NPCShopHandler extends AbstractPacketHandler { @Override public void handlePacket(InPacket p, Client c) { byte bmode = p.readByte(); - if (bmode == 0) { // mode 0 = buy :) + switch (bmode) { + case 0: { // mode 0 = buy :) short slot = p.readShort();// slot int itemId = p.readInt(); short quantity = p.readShort(); if (quantity < 1) { - AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit a npc shop."); + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), + c.getPlayer().getName() + " tried to packet edit a npc shop."); log.warn("Chr {} tried to buy quantity {} of itemid {}", c.getPlayer().getName(), quantity, itemId); c.disconnect(true, false); return; } c.getPlayer().getShop().buy(c, slot, itemId, quantity); - } else if (bmode == 1) { // sell ;) + break; + } + case 1: { // sell ;) short slot = p.readShort(); int itemId = p.readInt(); short quantity = p.readShort(); c.getPlayer().getShop().sell(c, ItemConstants.getInventoryType(itemId), slot, quantity); - } else if (bmode == 2) { // recharge ;) + break; + } + case 2: { // recharge ;) + byte slot = (byte) p.readShort(); c.getPlayer().getShop().recharge(c, slot); - } else if (bmode == 3) { // leaving :( - c.getPlayer().setShop(null); + break; } + case 3: // leaving :( + c.getPlayer().setShop(null); + break; + } + } } diff --git a/src/main/java/net/server/channel/handlers/QuestActionHandler.java b/src/main/java/net/server/channel/handlers/QuestActionHandler.java index 9a11c75814..fff09631ef 100644 --- a/src/main/java/net/server/channel/handlers/QuestActionHandler.java +++ b/src/main/java/net/server/channel/handlers/QuestActionHandler.java @@ -73,25 +73,27 @@ public final class QuestActionHandler extends AbstractPacketHandler { Character player = c.getPlayer(); Quest quest = Quest.getInstance(questid); - if (action == 0) { // Restore lost item, Credits Darter ( Rajan ) + switch (action) { + case 0: // Restore lost item, Credits Darter ( Rajan ) p.readInt(); int itemid = p.readInt(); quest.restoreLostItem(player, itemid); - } else if (action == 1) { //Start Quest + break; + case 1: { // Start Quest int npc = p.readInt(); if (!isNpcNearby(p, player, quest, npc)) { return; } - if (quest.canStart(player, npc)) { quest.start(player, npc); } - } else if (action == 2) { // Complete Quest + break; + } + case 2: { // Complete Quest int npc = p.readInt(); if (!isNpcNearby(p, player, quest, npc)) { return; } - if (quest.canComplete(player, npc)) { if (p.available() >= 2) { int selection = p.readShort(); @@ -100,26 +102,31 @@ public final class QuestActionHandler extends AbstractPacketHandler { quest.complete(player, npc); } } - } else if (action == 3) {// forfeit quest + break; + } + case 3: // forfeit quest quest.forfeit(player); - } else if (action == 4) { // scripted start quest + break; + case 4: { // scripted start quest int npc = p.readInt(); if (!isNpcNearby(p, player, quest, npc)) { return; } - if (quest.canStart(player, npc)) { QuestScriptManager.getInstance().start(c, questid, npc); } - } else if (action == 5) { // scripted end quests + break; + } + case 5: { // scripted end quests int npc = p.readInt(); if (!isNpcNearby(p, player, quest, npc)) { return; } - if (quest.canComplete(player, npc)) { QuestScriptManager.getInstance().end(c, questid, npc); } + break; + } } } } diff --git a/src/main/java/net/server/handlers/login/CreateCharHandler.java b/src/main/java/net/server/handlers/login/CreateCharHandler.java index a360d96049..9a62af04ed 100644 --- a/src/main/java/net/server/handlers/login/CreateCharHandler.java +++ b/src/main/java/net/server/handlers/login/CreateCharHandler.java @@ -86,13 +86,17 @@ public final class CreateCharHandler extends AbstractPacketHandler { } int status; - if (job == 0) { // Knights of Cygnus + switch (job) { + case 0: // Knights of Cygnus status = NoblesseCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender); - } else if (job == 1) { // Adventurer + break; + case 1: // Adventurer status = BeginnerCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender); - } else if (job == 2) { // Aran + break; + case 2: // Aran status = LegendCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender); - } else { + break; + default: c.sendPacket(PacketCreator.deleteCharResponse(0, 9)); return; } diff --git a/src/main/java/scripting/map/MapScriptMethods.java b/src/main/java/scripting/map/MapScriptMethods.java index 7cbf73903d..ab6c68b8ff 100644 --- a/src/main/java/scripting/map/MapScriptMethods.java +++ b/src/main/java/scripting/map/MapScriptMethods.java @@ -72,21 +72,22 @@ public class MapScriptMethods extends AbstractPlayerInteraction { } public void startExplorerExperience() { - if (c.getPlayer().getMapId() == 1020100) //Swordman - { + switch (c.getPlayer().getMapId()) { + case 1020100: //Swordman c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/swordman/Scene" + c.getPlayer().getGender())); - } else if (c.getPlayer().getMapId() == 1020200) //Magician - { + break; + case 1020200: //Magician c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/magician/Scene" + c.getPlayer().getGender())); - } else if (c.getPlayer().getMapId() == 1020300) //Archer - { + break; + case 1020300: //Archer c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/archer/Scene" + c.getPlayer().getGender())); - } else if (c.getPlayer().getMapId() == 1020400) //Rogue - { + break; + case 1020400: //Rogue c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/rogue/Scene" + c.getPlayer().getGender())); - } else if (c.getPlayer().getMapId() == 1020500) //Pirate - { + break; + case 1020500: //Pirate c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/pirate/Scene" + c.getPlayer().getGender())); + break; } } diff --git a/src/main/java/server/CashShop.java b/src/main/java/server/CashShop.java index 0e7531ec46..aa7a76fc3e 100644 --- a/src/main/java/server/CashShop.java +++ b/src/main/java/server/CashShop.java @@ -104,16 +104,20 @@ public class CashShop { if (ItemConstants.EXPIRING_ITEMS) { if (period == 1) { - if (itemId == ItemId.EXP_COUPON_2X_4H || itemId == ItemId.DROP_COUPON_2X_4H) { // 4 Hour 2X coupons, the period is 1, but we don't want them to last a day. + switch (itemId) { + case ItemId.DROP_COUPON_2X_4H, ItemId.EXP_COUPON_2X_4H: // 4 Hour 2X coupons, the period is 1, but we don't want them to last a day. item.setExpiration(Server.getInstance().getCurrentTime() + HOURS.toMillis(4)); /* } else if(itemId == 5211047 || itemId == 5360014) { // 3 Hour 2X coupons, unused as of now item.setExpiration(Server.getInstance().getCurrentTime() + HOURS.toMillis(3)); */ - } else if (itemId == ItemId.EXP_COUPON_3X_2H) { // 2 Hour 3X coupons. + break; + case ItemId.EXP_COUPON_3X_2H: item.setExpiration(Server.getInstance().getCurrentTime() + HOURS.toMillis(2)); - } else { + break; + default: item.setExpiration(Server.getInstance().getCurrentTime() + DAYS.toMillis(1)); + break; } } else { item.setExpiration(Server.getInstance().getCurrentTime() + DAYS.toMillis(period)); @@ -264,12 +268,16 @@ public class CashShop { this.characterId = characterId; if (!YamlConfig.config.server.USE_JOINT_CASHSHOP_INVENTORY) { - if (jobType == 0) { + switch (jobType) { + case 0: factory = ItemFactory.CASH_EXPLORER; - } else if (jobType == 1) { + break; + case 1: factory = ItemFactory.CASH_CYGNUS; - } else if (jobType == 2) { + break; + case 2: factory = ItemFactory.CASH_ARAN; + break; } } else { factory = ItemFactory.CASH_OVERALL; diff --git a/src/main/java/server/SkillbookInformationProvider.java b/src/main/java/server/SkillbookInformationProvider.java index 1661f80732..6a3d4a4acc 100644 --- a/src/main/java/server/SkillbookInformationProvider.java +++ b/src/main/java/server/SkillbookInformationProvider.java @@ -26,12 +26,9 @@ import provider.Data; import provider.DataProvider; import provider.DataProviderFactory; import provider.DataTool; -import provider.wz.WZDirectoryEntry; -import provider.wz.WZFileEntry; import provider.wz.WZFiles; import tools.DatabaseConnection; -import java.io.File; import java.io.IOException; import java.nio.file.DirectoryStream; import java.nio.file.Files; diff --git a/src/main/java/server/events/gm/Snowball.java b/src/main/java/server/events/gm/Snowball.java index d93bf7b7d2..7b6519ce87 100644 --- a/src/main/java/server/events/gm/Snowball.java +++ b/src/main/java/server/events/gm/Snowball.java @@ -128,12 +128,16 @@ public class Snowball { if (this.hits == 0) { this.position += 1; - if (this.position == 45) { + switch (this.position) { + case 45: map.getSnowball(team == 0 ? 1 : 0).message(1); - } else if (this.position == 290) { + break; + case 290: map.getSnowball(team == 0 ? 1 : 0).message(2); - } else if (this.position == 560) { + break; + case 560: map.getSnowball(team == 0 ? 1 : 0).message(3); + break; } this.hits = 3; diff --git a/src/main/java/server/gachapon/GachaponItems.java b/src/main/java/server/gachapon/GachaponItems.java index 64e01e2744..d6f969f004 100644 --- a/src/main/java/server/gachapon/GachaponItems.java +++ b/src/main/java/server/gachapon/GachaponItems.java @@ -43,14 +43,16 @@ public abstract class GachaponItems { } public final int[] getItems(int tier) { - if (tier == 0) { + switch (tier) { + case 0: return commonItems; - } else if (tier == 1) { + case 1: return uncommonItems; - } else if (tier == 2) { + case 2: return rareItems; + default: + return null; } - return null; } } diff --git a/src/main/java/server/partyquest/AriantColiseum.java b/src/main/java/server/partyquest/AriantColiseum.java index 2a7b8f50c2..edfe200217 100644 --- a/src/main/java/server/partyquest/AriantColiseum.java +++ b/src/main/java/server/partyquest/AriantColiseum.java @@ -249,16 +249,14 @@ public class AriantColiseum { } private ExpeditionType getExpeditionType() { - ExpeditionType type; - if (map.getId() == MapId.ARPQ_ARENA_1) { - type = ExpeditionType.ARIANT; - } else if (map.getId() == MapId.ARPQ_ARENA_2) { - type = ExpeditionType.ARIANT1; - } else { - type = ExpeditionType.ARIANT2; + switch (map.getId()) { + case MapId.ARPQ_ARENA_1: + return ExpeditionType.ARIANT; + case MapId.ARPQ_ARENA_2: + return ExpeditionType.ARIANT1; + default: + return ExpeditionType.ARIANT2; } - - return type; } private void enterKingsRoom() { diff --git a/src/main/java/server/partyquest/PartyQuest.java b/src/main/java/server/partyquest/PartyQuest.java index 221f851011..567b378854 100644 --- a/src/main/java/server/partyquest/PartyQuest.java +++ b/src/main/java/server/partyquest/PartyQuest.java @@ -70,48 +70,47 @@ public class PartyQuest { synchronized (participants) { participants.remove(chr); chr.setPartyQuest(null); - if (participants.isEmpty()) { - super.finalize(); - } //System.gc(); } } public static int getExp(String PQ, int level) { - if (PQ.equals("HenesysPQ")) { + switch (PQ) { + case "HenesysPQ": return 1250 * level / 5; - } else if (PQ.equals("KerningPQFinal")) { + case "KerningPQFinal": return 500 * level / 5; - } else if (PQ.equals("KerningPQ4th")) { + case "KerningPQ4th": return 400 * level / 5; - } else if (PQ.equals("KerningPQ3rd")) { + case "KerningPQ3rd": return 300 * level / 5; - } else if (PQ.equals("KerningPQ2nd")) { + case "KerningPQ2nd": return 200 * level / 5; - } else if (PQ.equals("KerningPQ1st")) { + case "KerningPQ1st": return 100 * level / 5; - } else if (PQ.equals("LudiMazePQ")) { + case "LudiMazePQ": return 2000 * level / 5; - } else if (PQ.equals("LudiPQ1st")) { + case "LudiPQ1st": return 100 * level / 5; - } else if (PQ.equals("LudiPQ2nd")) { + case "LudiPQ2nd": return 250 * level / 5; - } else if (PQ.equals("LudiPQ3rd")) { + case "LudiPQ3rd": return 350 * level / 5; - } else if (PQ.equals("LudiPQ4th")) { + case "LudiPQ4th": return 350 * level / 5; - } else if (PQ.equals("LudiPQ5th")) { + case "LudiPQ5th": return 400 * level / 5; - } else if (PQ.equals("LudiPQ6th")) { + case "LudiPQ6th": return 450 * level / 5; - } else if (PQ.equals("LudiPQ7th")) { + case "LudiPQ7th": return 500 * level / 5; - } else if (PQ.equals("LudiPQ8th")) { + case "LudiPQ8th": return 650 * level / 5; - } else if (PQ.equals("LudiPQLast")) { + case "LudiPQLast": return 800 * level / 5; + default: + log.warn("Unhandled PartyQuest: {}", PQ); + return 0; } - log.warn("Unhandled PartyQuest: {}", PQ); - return 0; } } diff --git a/src/main/java/server/quest/Quest.java b/src/main/java/server/quest/Quest.java index 30457f9ab6..bab66d9a60 100644 --- a/src/main/java/server/quest/Quest.java +++ b/src/main/java/server/quest/Quest.java @@ -111,12 +111,15 @@ public class Quest { if (startReqData != null) { for (Data startReq : startReqData.getChildren()) { QuestRequirementType type = QuestRequirementType.getByWZName(startReq.getName()); - if (type.equals(QuestRequirementType.INTERVAL)) { + switch (type) { + case INTERVAL: repeatable = true; - } else if (type.equals(QuestRequirementType.MOB)) { + break; + case MOB: for (Data mob : startReq.getChildren()) { relevantMobs.add(DataTool.getInt(mob.getChildByPath("id"))); } + break; } AbstractQuestRequirement req = this.getRequirement(type, startReq); diff --git a/src/main/java/server/quest/QuestActionType.java b/src/main/java/server/quest/QuestActionType.java index 07cac80c67..6ee793df8f 100644 --- a/src/main/java/server/quest/QuestActionType.java +++ b/src/main/java/server/quest/QuestActionType.java @@ -52,41 +52,42 @@ public enum QuestActionType { } public static QuestActionType getByWZName(String name) { - if (name.equals("exp")) { + switch (name) { + case "exp": return EXP; - } else if (name.equals("money")) { + case "money": return MESO; - } else if (name.equals("item")) { + case "item": return ITEM; - } else if (name.equals("skill")) { + case "skill": return SKILL; - } else if (name.equals("nextQuest")) { + case "nextQuest": return NEXTQUEST; - } else if (name.equals("pop")) { + case "pop": return FAME; - } else if (name.equals("buffItemID")) { + case "buffItemID": return BUFF; - } else if (name.equals("petskill")) { + case "petskill": return PETSKILL; - } else if (name.equals("no")) { + case "no": return NO; - } else if (name.equals("yes")) { + case "yes": return YES; - } else if (name.equals("npc")) { + case "npc": return NPC; - } else if (name.equals("lvmin")) { + case "lvmin": return MIN_LEVEL; - } else if (name.equals("normalAutoStart")) { + case "normalAutoStart": return NORMAL_AUTO_START; - } else if (name.equals("pettameness")) { + case "pettameness": return PETTAMENESS; - } else if (name.equals("petspeed")) { + case "petspeed": return PETSPEED; - } else if (name.equals("info")) { + case "info": return INFO; - } else if (name.equals("0")) { + case "0": return ZERO; - } else { + default: return UNDEFINED; } } diff --git a/src/main/java/server/quest/QuestRequirementType.java b/src/main/java/server/quest/QuestRequirementType.java index cd33da7b4d..42996c675e 100644 --- a/src/main/java/server/quest/QuestRequirementType.java +++ b/src/main/java/server/quest/QuestRequirementType.java @@ -62,57 +62,58 @@ public enum QuestRequirementType { } public static QuestRequirementType getByWZName(String name) { - if (name.equals("job")) { + switch (name) { + case "job": return JOB; - } else if (name.equals("quest")) { + case "quest": return QUEST; - } else if (name.equals("item")) { + case "item": return ITEM; - } else if (name.equals("lvmin")) { + case "lvmin": return MIN_LEVEL; - } else if (name.equals("lvmax")) { + case "lvmax": return MAX_LEVEL; - } else if (name.equals("end")) { + case "end": return END_DATE; - } else if (name.equals("mob")) { + case "mob": return MOB; - } else if (name.equals("npc")) { + case "npc": return NPC; - } else if (name.equals("fieldEnter")) { + case "fieldEnter": return FIELD_ENTER; - } else if (name.equals("interval")) { + case "interval": return INTERVAL; - } else if (name.equals("startscript")) { + case "startscript": return SCRIPT; - } else if (name.equals("endscript")) { + case "endscript": return SCRIPT; - } else if (name.equals("pet")) { + case "pet": return PET; - } else if (name.equals("pettamenessmin")) { + case "pettamenessmin": return MIN_PET_TAMENESS; - } else if (name.equals("mbmin")) { + case "mbmin": return MONSTER_BOOK; - } else if (name.equals("normalAutoStart")) { + case "normalAutoStart": return NORMAL_AUTO_START; - } else if (name.equals("infoNumber")) { + case "infoNumber": return INFO_NUMBER; - } else if (name.equals("infoex")) { + case "infoex": return INFO_EX; - } else if (name.equals("questComplete")) { + case "questComplete": return COMPLETED_QUEST; - } else if (name.equals("start")) { + case "start": return START; - /*} else if(name.equals("end")) { already coded + /* case "end":already coded return END;*/ - } else if (name.equals("daybyday")) { + case "daybyday": return DAY_BY_DAY; - } else if (name.equals("money")) { + case "money": return MESO; - } else if (name.equals("buff")) { + case "buff": return BUFF; - } else if (name.equals("exceptbuff")) { + case "exceptbuff": return EXCEPT_BUFF; - } else { + default: return UNDEFINED; } } diff --git a/src/main/java/tools/mapletools/MobBookIndexer.java b/src/main/java/tools/mapletools/MobBookIndexer.java index 56d566fae3..91dbcaadbc 100644 --- a/src/main/java/tools/mapletools/MobBookIndexer.java +++ b/src/main/java/tools/mapletools/MobBookIndexer.java @@ -3,7 +3,6 @@ package tools.mapletools; import provider.wz.WZFiles; import java.io.*; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.sql.Connection; From 85e5356a9c8adc6970bd89818c034ac0452fab5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Thu, 11 Aug 2022 01:33:48 +0700 Subject: [PATCH 6/9] Moving checking storage null to when loading char --- src/main/java/client/Character.java | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index 7eda2656fc..45ea15148e 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -7402,10 +7402,19 @@ public class Character extends AbstractCharacterObject { } } } - + ret.buddylist.loadFromDb(charid); ret.storage = wserv.getAccountStorage(ret.accountid); - + /* + * Bugs when player first time into server + * The storage won't exist so nothing to load + * and must wait until next login + */ + if(ret.storage == null) { + wserv.loadAccountStorage(ret.accountid); + ret.storage = wserv.getAccountStorage(ret.accountid); + } + int startHp = ret.hp, startMp = ret.mp; ret.reapplyLocalStats(); ret.changeHpMp(startHp, startMp, true); @@ -8297,15 +8306,6 @@ public class Character extends AbstractCharacterObject { } } - /* - * Bugs when player first time into server - * The storage won't get initialize - * and must wait until next login - */ - if (getStorage() == null) { - Server.getInstance().getWorld(world).loadAccountStorage(accountid); - } - con.commit(); return true; } catch (Exception e) { From 8e395b07700f911d89904fa1819e0218c1073992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Thu, 11 Aug 2022 15:58:18 +0700 Subject: [PATCH 7/9] remove comments --- src/main/java/client/Character.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index 45ea15148e..14cd6a7cc6 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -7405,11 +7405,7 @@ public class Character extends AbstractCharacterObject { ret.buddylist.loadFromDb(charid); ret.storage = wserv.getAccountStorage(ret.accountid); - /* - * Bugs when player first time into server - * The storage won't exist so nothing to load - * and must wait until next login - */ + if(ret.storage == null) { wserv.loadAccountStorage(ret.accountid); ret.storage = wserv.getAccountStorage(ret.accountid); From 53914bbd32b77a10dfba2d62dd4217fe9803209a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=A1t=20Nh=C3=A2n=20Tr=C6=B0=C6=A1ng?= Date: Thu, 11 Aug 2022 16:02:53 +0700 Subject: [PATCH 8/9] Removing unused comments --- src/main/java/client/Character.java | 3 +++ .../java/net/server/channel/handlers/BBSOperationHandler.java | 3 --- src/main/java/net/server/channel/handlers/MTSHandler.java | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index 14cd6a7cc6..b3e755d8fd 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -7406,6 +7406,9 @@ public class Character extends AbstractCharacterObject { ret.buddylist.loadFromDb(charid); ret.storage = wserv.getAccountStorage(ret.accountid); + /* Double-check storage incase player is first time on server + * The storage won't exist so nothing to load + */ if(ret.storage == null) { wserv.loadAccountStorage(ret.accountid); ret.storage = wserv.getAccountStorage(ret.accountid); diff --git a/src/main/java/net/server/channel/handlers/BBSOperationHandler.java b/src/main/java/net/server/channel/handlers/BBSOperationHandler.java index b8b17ed0ed..06031e5cdc 100644 --- a/src/main/java/net/server/channel/handlers/BBSOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/BBSOperationHandler.java @@ -318,9 +318,6 @@ public final class BBSOperationHandler extends AbstractPacketHandler { } client.sendPacket(GuildPackets.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS)); } - /* repliesRS.close(); - * Don't need because ResultSet will be closed - * when associated Statement close*/ } } catch (SQLException se) { log.error("Error displaying thread", se); diff --git a/src/main/java/net/server/channel/handlers/MTSHandler.java b/src/main/java/net/server/channel/handlers/MTSHandler.java index 32ed63e8fa..ca00cc842f 100644 --- a/src/main/java/net/server/channel/handlers/MTSHandler.java +++ b/src/main/java/net/server/channel/handlers/MTSHandler.java @@ -359,7 +359,6 @@ public final class MTSHandler extends AbstractPacketHandler { c.sendPacket(PacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition())); c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); } - // rs.close(); Closing statement will also close related resultset } } catch (SQLException e) { log.error("MTS Transfer error", e); From 7f7b28874f50b9e144538462bf32f40d09d8751c Mon Sep 17 00:00:00 2001 From: truongdatnhan Date: Thu, 11 Aug 2022 16:08:45 +0700 Subject: [PATCH 9/9] Remove comments --- src/main/java/client/Character.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index 2d41aa94ed..ec324f9927 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -8304,16 +8304,7 @@ public class Character extends AbstractCharacterObject { ps.executeBatch(); } } - - /* - * Bugs when player first time into server - * The storage won't get initialize - * and must wait until next login - */ - if (getStorage() == null) { - Server.getInstance().getWorld(world).loadAccountStorage(accountid); - } - + con.commit(); return true; } catch (Exception e) {