From 8f6860d7d74960fcf263a5ed509abfe41e091798 Mon Sep 17 00:00:00 2001 From: P0nk Date: Sat, 21 Aug 2021 01:36:51 +0200 Subject: [PATCH] All packet creating methods now create Packet instead of byte[] This commit got way too big... - Remove deprecated methods for sending packets - Favor OutPacket & Packet over MaplePacketLittleEndianWriter, LittleEndianWriter, and byte array - Split up some packet creating methods into separate classes --- scripts/event/3rdJob_bowman.js | 2 +- scripts/event/3rdJob_magician.js | 2 +- scripts/event/3rdJob_mount.js | 2 +- scripts/event/3rdJob_pirate.js | 2 +- scripts/event/3rdJob_thief.js | 2 +- scripts/event/3rdJob_warrior.js | 2 +- scripts/event/Aran_2ndmount.js | 2 +- scripts/event/Aran_3rdmount.js | 2 +- scripts/event/BalrogQuest.js | 2 +- scripts/event/DollHouse.js | 2 +- scripts/event/Hak.js | 2 +- scripts/event/KerningTrain.js | 4 +- scripts/event/RescueGaga.js | 2 +- scripts/map/onUserEnter/200090000.js | 4 +- scripts/map/onUserEnter/200090010.js | 4 +- scripts/npc/1022101_old.js | 2 +- scripts/npc/2012027.js | 8 +- scripts/npc/2012028.js | 8 +- scripts/npc/2012029.js | 8 +- scripts/npc/2012030.js | 8 +- scripts/npc/2012031.js | 8 +- scripts/npc/2012032.js | 8 +- scripts/npc/2012033.js | 8 +- scripts/npc/9000019.js | 2 +- scripts/npc/9201002.js | 10 +- scripts/npc/9201011.js | 10 +- scripts/npc/9977777.js | 8 +- scripts/npc/MagatiaPassword.js | 2 +- src/main/java/client/BuddyList.java | 7 +- src/main/java/client/MapleCharacter.java | 232 +- src/main/java/client/MapleClient.java | 65 +- src/main/java/client/MapleFamily.java | 9 +- src/main/java/client/MapleFamilyEntry.java | 13 +- src/main/java/client/MonsterBook.java | 6 +- .../command/commands/gm0/DisposeCommand.java | 2 +- .../command/commands/gm0/RanksCommand.java | 4 +- .../command/commands/gm3/BanCommand.java | 6 +- .../commands/gm3/MaxEnergyCommand.java | 2 +- .../command/commands/gm3/MusicCommand.java | 4 +- .../command/commands/gm3/TimerAllCommand.java | 4 +- .../command/commands/gm3/TimerCommand.java | 4 +- .../command/commands/gm3/TimerMapCommand.java | 4 +- .../commands/gm6/WarpWorldCommand.java | 2 +- .../java/client/creator/CharacterFactory.java | 2 +- src/main/java/client/inventory/Equip.java | 4 +- src/main/java/client/inventory/MaplePet.java | 2 +- .../MapleInventoryManipulator.java | 88 +- .../client/keybind/MapleQuickslotBinding.java | 17 +- .../client/newyear/NewYearCardRecord.java | 2 +- .../processor/action/BuybackProcessor.java | 2 +- .../processor/action/MakerProcessor.java | 48 +- .../processor/action/PetAutopotProcessor.java | 8 +- .../processor/action/SpawnPetProcessor.java | 8 +- .../client/processor/npc/DueyProcessor.java | 36 +- .../processor/npc/FredrickProcessor.java | 4 +- .../processor/npc/StorageProcessor.java | 28 +- .../processor/stat/AssignAPProcessor.java | 50 +- .../processor/stat/AssignSPProcessor.java | 4 +- .../net/netty/ServerChannelInitializer.java | 2 +- .../java/net/packet/ByteBufOutPacket.java | 8 +- src/main/java/net/packet/OutPacket.java | 3 +- src/main/java/net/server/Server.java | 11 +- src/main/java/net/server/channel/Channel.java | 11 +- .../handlers/AbstractDealDamageHandler.java | 4 +- .../channel/handlers/AcceptFamilyHandler.java | 18 +- .../channel/handlers/AdminChatHandler.java | 3 +- .../channel/handlers/AdminCommandHandler.java | 14 +- .../handlers/AllianceOperationHandler.java | 46 +- .../channel/handlers/BBSOperationHandler.java | 6 +- .../handlers/BuddylistModifyHandler.java | 16 +- .../channel/handlers/CancelDebuffHandler.java | 2 +- .../handlers/CashOperationHandler.java | 98 +- .../handlers/CashShopSurpriseHandler.java | 4 +- .../channel/handlers/ChangeMapHandler.java | 18 +- .../handlers/ChangeMapSpecialHandler.java | 4 +- .../handlers/CharInfoRequestHandler.java | 2 +- .../handlers/CloseRangeDamageHandler.java | 10 +- .../channel/handlers/CouponCodeHandler.java | 6 +- .../handlers/DenyPartyRequestHandler.java | 2 +- .../server/channel/handlers/DoorHandler.java | 6 +- .../server/channel/handlers/DueyHandler.java | 2 +- .../handlers/EnterCashShopHandler.java | 20 +- .../channel/handlers/EnterMTSHandler.java | 32 +- .../channel/handlers/FamilyAddHandler.java | 20 +- .../handlers/FamilyPreceptsHandler.java | 2 +- .../handlers/FamilySeparateHandler.java | 6 +- .../handlers/FamilySummonResponseHandler.java | 2 +- .../channel/handlers/FamilyUseHandler.java | 14 +- .../channel/handlers/FredrickHandler.java | 2 +- .../channel/handlers/GeneralChatHandler.java | 2 +- .../channel/handlers/GiveFameHandler.java | 2 +- .../handlers/GuildOperationHandler.java | 21 +- .../handlers/HiredMerchantRequest.java | 10 +- .../handlers/InventoryMergeHandler.java | 6 +- .../handlers/InventorySortHandler.java | 8 +- .../channel/handlers/ItemMoveHandler.java | 2 +- .../channel/handlers/ItemRewardHandler.java | 4 +- .../handlers/LeftKnockbackHandler.java | 4 +- .../server/channel/handlers/MTSHandler.java | 101 +- .../channel/handlers/MagicDamageHandler.java | 7 +- .../channel/handlers/MesoDropHandler.java | 6 +- .../channel/handlers/MessengerHandler.java | 14 +- .../handlers/MobDamageMobFriendlyHandler.java | 2 +- .../handlers/MonsterBookCoverHandler.java | 2 +- .../handlers/MonsterCarnivalHandler.java | 34 +- .../channel/handlers/MoveDragonHandler.java | 2 +- .../channel/handlers/MoveLifeHandler.java | 4 +- .../channel/handlers/NPCAnimationHandler.java | 19 +- .../channel/handlers/NPCTalkHandler.java | 8 +- .../channel/handlers/NewYearCardHandler.java | 16 +- .../channel/handlers/NoteActionHandler.java | 2 +- .../channel/handlers/OpenFamilyHandler.java | 2 +- .../handlers/OpenFamilyPedigreeHandler.java | 2 +- .../channel/handlers/OwlWarpHandler.java | 40 +- .../handlers/PartyOperationHandler.java | 16 +- .../handlers/PartySearchStartHandler.java | 6 +- .../channel/handlers/PetFoodHandler.java | 4 +- .../channel/handlers/PetLootHandler.java | 12 +- .../handlers/PlayerInteractionHandler.java | 106 +- .../handlers/PlayerLoggedinHandler.java | 55 +- .../handlers/PlayerMapTransitionHandler.java | 4 +- .../channel/handlers/RPSActionHandler.java | 10 +- .../channel/handlers/RaiseIncExpHandler.java | 4 +- .../channel/handlers/RangedAttackHandler.java | 9 +- .../channel/handlers/RemoteStoreHandler.java | 4 +- .../channel/handlers/ReportHandler.java | 6 +- .../channel/handlers/RingActionHandler.java | 78 +- .../channel/handlers/ScrollHandler.java | 6 +- .../channel/handlers/SkillBookHandler.java | 2 +- .../channel/handlers/SpecialMoveHandler.java | 16 +- .../channel/handlers/SpouseChatHandler.java | 4 +- .../channel/handlers/TakeDamageHandler.java | 6 +- .../handlers/TouchingCashShopHandler.java | 2 +- .../channel/handlers/TransferNameHandler.java | 16 +- .../handlers/TransferNameResultHandler.java | 2 +- .../handlers/TransferWorldHandler.java | 14 +- .../channel/handlers/TrockAddMapHandler.java | 4 +- .../channel/handlers/UseCashItemHandler.java | 259 +- .../channel/handlers/UseCatchItemHandler.java | 36 +- .../channel/handlers/UseDeathItemHandler.java | 2 +- .../channel/handlers/UseGachaExpHandler.java | 2 +- .../channel/handlers/UseHammerHandler.java | 2 +- .../channel/handlers/UseItemHandler.java | 4 +- .../channel/handlers/UseMapleLifeHandler.java | 10 +- .../handlers/UseOwlOfMinervaHandler.java | 2 +- .../channel/handlers/UseSolomonHandler.java | 2 +- .../channel/handlers/UseSummonBagHandler.java | 4 +- .../channel/handlers/WeddingHandler.java | 28 +- .../channel/handlers/WeddingTalkHandler.java | 10 +- .../handlers/WeddingTalkMoreHandler.java | 6 +- .../channel/handlers/WhisperHandler.java | 14 +- .../listener/MatchCheckerGuildCreation.java | 19 +- .../MaplePartySearchCoordinator.java | 2 +- .../java/net/server/guild/GuildPackets.java | 543 + .../java/net/server/guild/MapleAlliance.java | 24 +- .../java/net/server/guild/MapleGuild.java | 54 +- .../net/server/guild/MapleGuildResponse.java | 12 +- .../server/handlers/CustomPacketHandler.java | 2 +- .../handlers/login/AcceptToSHandler.java | 4 +- .../handlers/login/AfterLoginHandler.java | 12 +- .../handlers/login/CharSelectedHandler.java | 10 +- .../login/CharSelectedWithPicHandler.java | 12 +- .../login/CharlistRequestHandler.java | 4 +- .../handlers/login/CheckCharNameHandler.java | 2 +- .../handlers/login/CreateCharHandler.java | 4 +- .../handlers/login/DeleteCharHandler.java | 14 +- .../handlers/login/GuestLoginHandler.java | 2 +- .../handlers/login/LoginPasswordHandler.java | 14 +- .../handlers/login/RegisterPicHandler.java | 10 +- .../handlers/login/RegisterPinHandler.java | 2 +- .../handlers/login/RelogRequestHandler.java | 2 +- .../login/ServerStatusRequestHandler.java | 4 +- .../login/ServerlistRequestHandler.java | 8 +- .../handlers/login/SetGenderHandler.java | 2 +- .../handlers/login/ViewAllCharHandler.java | 6 +- .../login/ViewAllCharRegisterPicHandler.java | 10 +- .../login/ViewAllCharSelectedHandler.java | 10 +- .../ViewAllCharSelectedWithPicHandler.java | 12 +- .../java/net/server/world/MapleParty.java | 12 +- src/main/java/net/server/world/World.java | 56 +- .../scripting/AbstractPlayerInteraction.java | 74 +- .../scripting/event/EventInstanceManager.java | 20 +- .../java/scripting/map/MapScriptMethods.java | 50 +- .../scripting/npc/NPCConversationManager.java | 61 +- .../java/scripting/npc/NPCScriptManager.java | 2 +- .../portal/PortalPlayerInteraction.java | 2 +- src/main/java/server/MapleShop.java | 26 +- src/main/java/server/MapleStatEffect.java | 31 +- src/main/java/server/MapleStorage.java | 12 +- src/main/java/server/MapleTrade.java | 26 +- .../java/server/events/gm/MapleCoconut.java | 36 +- .../java/server/events/gm/MapleFitness.java | 28 +- src/main/java/server/events/gm/MapleOla.java | 4 +- .../java/server/events/gm/MapleSnowball.java | 10 +- .../server/expeditions/MapleExpedition.java | 39 +- src/main/java/server/life/MapleMonster.java | 45 +- src/main/java/server/life/MapleNPC.java | 10 +- src/main/java/server/life/MaplePlayerNPC.java | 8 +- .../java/server/maps/MapleDoorObject.java | 20 +- src/main/java/server/maps/MapleDragon.java | 4 +- .../java/server/maps/MapleGenericPortal.java | 2 +- .../java/server/maps/MapleHiredMerchant.java | 39 +- src/main/java/server/maps/MapleKite.java | 24 +- src/main/java/server/maps/MapleMap.java | 182 +- src/main/java/server/maps/MapleMapEffect.java | 13 +- src/main/java/server/maps/MapleMapItem.java | 52 +- .../java/server/maps/MapleMiniDungeon.java | 4 +- src/main/java/server/maps/MapleMiniGame.java | 23 +- src/main/java/server/maps/MapleMist.java | 11 +- .../java/server/maps/MaplePlayerShop.java | 45 +- src/main/java/server/maps/MapleReactor.java | 9 +- src/main/java/server/maps/MapleSummon.java | 4 +- .../minigame/MapleRockPaperScissor.java | 14 +- .../server/movement/AbsoluteLifeMovement.java | 21 +- .../java/server/movement/ChairMovement.java | 18 +- .../java/server/movement/ChangeEquip.java | 13 +- .../server/movement/JumpDownMovement.java | 23 +- .../server/movement/LifeMovementFragment.java | 7 +- .../server/movement/RelativeLifeMovement.java | 16 +- .../server/movement/TeleportMovement.java | 17 +- .../server/partyquest/AriantColiseum.java | 4 +- .../server/partyquest/MonsterCarnival.java | 16 +- .../partyquest/MonsterCarnivalParty.java | 2 +- src/main/java/server/partyquest/Pyramid.java | 12 +- src/main/java/server/quest/MapleQuest.java | 6 +- .../java/server/quest/actions/ItemAction.java | 4 +- .../server/quest/actions/NextQuestAction.java | 2 +- src/main/java/tools/PacketCreator.java | 8897 ++++++++--------- src/main/java/tools/packets/Fishing.java | 2 +- .../{Wedding.java => WeddingPackets.java} | 194 +- .../java/net/packet/ByteBufOutPacketTest.java | 4 +- 231 files changed, 6403 insertions(+), 6927 deletions(-) create mode 100644 src/main/java/net/server/guild/GuildPackets.java rename src/main/java/tools/packets/{Wedding.java => WeddingPackets.java} (63%) diff --git a/scripts/event/3rdJob_bowman.js b/scripts/event/3rdJob_bowman.js index bf17764cd6..a68959262e 100644 --- a/scripts/event/3rdJob_bowman.js +++ b/scripts/event/3rdJob_bowman.js @@ -55,7 +55,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_magician.js b/scripts/event/3rdJob_magician.js index 9a9614084f..ca391ed446 100644 --- a/scripts/event/3rdJob_magician.js +++ b/scripts/event/3rdJob_magician.js @@ -55,7 +55,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_mount.js b/scripts/event/3rdJob_mount.js index bd514983f1..7d45386e66 100644 --- a/scripts/event/3rdJob_mount.js +++ b/scripts/event/3rdJob_mount.js @@ -85,7 +85,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_pirate.js b/scripts/event/3rdJob_pirate.js index fd95fe986b..928ec11638 100644 --- a/scripts/event/3rdJob_pirate.js +++ b/scripts/event/3rdJob_pirate.js @@ -47,7 +47,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_thief.js b/scripts/event/3rdJob_thief.js index 4ef82f1a06..780f66d860 100644 --- a/scripts/event/3rdJob_thief.js +++ b/scripts/event/3rdJob_thief.js @@ -55,7 +55,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_warrior.js b/scripts/event/3rdJob_warrior.js index 0f36734085..c4890fb012 100644 --- a/scripts/event/3rdJob_warrior.js +++ b/scripts/event/3rdJob_warrior.js @@ -55,7 +55,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/Aran_2ndmount.js b/scripts/event/Aran_2ndmount.js index 1639ae8252..87843af48c 100644 --- a/scripts/event/Aran_2ndmount.js +++ b/scripts/event/Aran_2ndmount.js @@ -61,7 +61,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/Aran_3rdmount.js b/scripts/event/Aran_3rdmount.js index cce7fb3f12..0e9f37aa7f 100644 --- a/scripts/event/Aran_3rdmount.js +++ b/scripts/event/Aran_3rdmount.js @@ -62,7 +62,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/BalrogQuest.js b/scripts/event/BalrogQuest.js index 3332e5f847..af9c4c834e 100644 --- a/scripts/event/BalrogQuest.js +++ b/scripts/event/BalrogQuest.js @@ -64,7 +64,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/DollHouse.js b/scripts/event/DollHouse.js index f476024254..42e0e93c5e 100644 --- a/scripts/event/DollHouse.js +++ b/scripts/event/DollHouse.js @@ -47,7 +47,7 @@ function playerEntry(eim, player) { em.setProperty("noEntry","true"); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(eventTime * 60)); + player.sendPacket(PacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/Hak.js b/scripts/event/Hak.js index 0e10f03181..d47a926126 100644 --- a/scripts/event/Hak.js +++ b/scripts/event/Hak.js @@ -33,7 +33,7 @@ function playerEntry(eim, player) { player.changeMap(onRide, onRide.getPortal(0)); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(rideTime / 1000)); + player.sendPacket(PacketCreator.getClock(rideTime / 1000)); eim.schedule("timeOut", rideTime); } diff --git a/scripts/event/KerningTrain.js b/scripts/event/KerningTrain.js index d672f9f72c..4146384fb8 100644 --- a/scripts/event/KerningTrain.js +++ b/scripts/event/KerningTrain.js @@ -34,8 +34,8 @@ function playerEntry(eim, player) { player.changeMap(onRide, onRide.getPortal(0)); const PacketCreator = Java.type('tools.PacketCreator'); - player.getClient().announce(PacketCreator.getClock(rideTime / 1000)); - player.getClient().announce(PacketCreator.earnTitleMessage("The next stop is at Kerning " + (myRide == 0 ? "Square" : "Subway") + " Station. The exit is to your left.")); + player.sendPacket(PacketCreator.getClock(rideTime / 1000)); + player.sendPacket(PacketCreator.earnTitleMessage("The next stop is at Kerning " + (myRide == 0 ? "Square" : "Subway") + " Station. The exit is to your left.")); eim.schedule("timeOut", rideTime); } diff --git a/scripts/event/RescueGaga.js b/scripts/event/RescueGaga.js index 9b3f739c91..99b80fe97a 100644 --- a/scripts/event/RescueGaga.js +++ b/scripts/event/RescueGaga.js @@ -102,7 +102,7 @@ function playerEntry(eim, player) { player.changeMap(map, map.getPortal(0)); const PacketCreator = Java.type('tools.PacketCreator'); - player.announce(PacketCreator.showEffect("event/space/start")); + player.sendPacket(PacketCreator.showEffect("event/space/start")); player.startMapEffect("Please rescue Gaga within the time limit.", 5120027); } diff --git a/scripts/map/onUserEnter/200090000.js b/scripts/map/onUserEnter/200090000.js index f59d69363f..0c6511cd61 100644 --- a/scripts/map/onUserEnter/200090000.js +++ b/scripts/map/onUserEnter/200090000.js @@ -6,8 +6,8 @@ function start(ms) { if(map.getDocked()) { const PacketCreator = Java.type('tools.PacketCreator'); - ms.getClient().announce(PacketCreator.musicChange("Bgm04/ArabPirate")); - ms.getClient().announce(PacketCreator.crogBoatPacket(true)); + ms.getClient().sendPacket(PacketCreator.musicChange("Bgm04/ArabPirate")); + ms.getClient().sendPacket(PacketCreator.crogBoatPacket(true)); } return true; diff --git a/scripts/map/onUserEnter/200090010.js b/scripts/map/onUserEnter/200090010.js index 65063ad747..ecd5b6feb0 100644 --- a/scripts/map/onUserEnter/200090010.js +++ b/scripts/map/onUserEnter/200090010.js @@ -6,8 +6,8 @@ function start(ms) { if(map.getDocked()) { const PacketCreator = Java.type('tools.PacketCreator'); - ms.getClient().announce(PacketCreator.musicChange("Bgm04/ArabPirate")); - ms.getClient().announce(PacketCreator.crogBoatPacket(true)); + ms.getClient().sendPacket(PacketCreator.musicChange("Bgm04/ArabPirate")); + ms.getClient().sendPacket(PacketCreator.crogBoatPacket(true)); } return true; diff --git a/scripts/npc/1022101_old.js b/scripts/npc/1022101_old.js index f0a0c226fc..aaf881afbf 100644 --- a/scripts/npc/1022101_old.js +++ b/scripts/npc/1022101_old.js @@ -137,7 +137,7 @@ function action(mode, type, selection) { cm.getPlayer().getCashShop().gainCash(1, nxAmount); const PacketCreator = Java.type('tools.PacketCreator'); - cm.getPlayer().announce(PacketCreator.earnTitleMessage("You have earned " + nxAmount + " NX")); + cm.getPlayer().sendPacket(PacketCreator.earnTitleMessage("You have earned " + nxAmount + " NX")); cm.logLeaf(nxAmount + " NX"); cm.dispose(); } else if(choice == 2) { diff --git a/scripts/npc/2012027.js b/scripts/npc/2012027.js index 0eb18ddd36..cba57b8d63 100644 --- a/scripts/npc/2012027.js +++ b/scripts/npc/2012027.js @@ -57,8 +57,8 @@ function action(mode, type, selection) { if(harpNote != nextNote) { cm.setQuestProgress(3114, 0); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/wrong_kor")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Failed")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/wrong_kor")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Failed")); cm.message("You've missed the note... Start over again."); } else { @@ -71,8 +71,8 @@ function action(mode, type, selection) { cm.message("Twinkle, twinkle, little star, how I wonder what you are."); cm.setQuestProgress(3114, 42); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/clear")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Clear")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Clear")); cm.dispose(); return; diff --git a/scripts/npc/2012028.js b/scripts/npc/2012028.js index 3986903679..bfe547c32b 100644 --- a/scripts/npc/2012028.js +++ b/scripts/npc/2012028.js @@ -57,8 +57,8 @@ function action(mode, type, selection) { if(harpNote != nextNote) { cm.setQuestProgress(3114, 0); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/wrong_kor")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Failed")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/wrong_kor")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Failed")); cm.message("You've missed the note... Start over again."); } else { @@ -71,8 +71,8 @@ function action(mode, type, selection) { cm.message("Twinkle, twinkle, little star, how I wonder what you are."); cm.setQuestProgress(3114, 42); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/clear")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Clear")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Clear")); cm.dispose(); return; diff --git a/scripts/npc/2012029.js b/scripts/npc/2012029.js index 8b986072ac..4d769c2932 100644 --- a/scripts/npc/2012029.js +++ b/scripts/npc/2012029.js @@ -57,8 +57,8 @@ function action(mode, type, selection) { if(harpNote != nextNote) { cm.setQuestProgress(3114, 0); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/wrong_kor")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Failed")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/wrong_kor")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Failed")); cm.message("You've missed the note... Start over again."); } else { @@ -71,8 +71,8 @@ function action(mode, type, selection) { cm.message("Twinkle, twinkle, little star, how I wonder what you are."); cm.setQuestProgress(3114, 42); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/clear")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Clear")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Clear")); cm.dispose(); return; diff --git a/scripts/npc/2012030.js b/scripts/npc/2012030.js index 2a50a6cf68..af7282a361 100644 --- a/scripts/npc/2012030.js +++ b/scripts/npc/2012030.js @@ -57,8 +57,8 @@ function action(mode, type, selection) { if(harpNote != nextNote) { cm.setQuestProgress(3114, 0); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/wrong_kor")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Failed")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/wrong_kor")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Failed")); cm.message("You've missed the note... Start over again."); } else { @@ -71,8 +71,8 @@ function action(mode, type, selection) { cm.message("Twinkle, twinkle, little star, how I wonder what you are."); cm.setQuestProgress(3114, 42); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/clear")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Clear")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Clear")); cm.dispose(); return; diff --git a/scripts/npc/2012031.js b/scripts/npc/2012031.js index 8202dad15f..4087b3f6f4 100644 --- a/scripts/npc/2012031.js +++ b/scripts/npc/2012031.js @@ -57,8 +57,8 @@ function action(mode, type, selection) { if(harpNote != nextNote) { cm.setQuestProgress(3114, 0); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/wrong_kor")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Failed")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/wrong_kor")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Failed")); cm.message("You've missed the note... Start over again."); } else { @@ -71,8 +71,8 @@ function action(mode, type, selection) { cm.message("Twinkle, twinkle, little star, how I wonder what you are."); cm.setQuestProgress(3114, 42); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/clear")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Clear")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Clear")); cm.dispose(); return; diff --git a/scripts/npc/2012032.js b/scripts/npc/2012032.js index 16281bbb9a..edbc02f44d 100644 --- a/scripts/npc/2012032.js +++ b/scripts/npc/2012032.js @@ -57,8 +57,8 @@ function action(mode, type, selection) { if(harpNote != nextNote) { cm.setQuestProgress(3114, 0); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/wrong_kor")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Failed")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/wrong_kor")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Failed")); cm.message("You've missed the note... Start over again."); } else { @@ -71,8 +71,8 @@ function action(mode, type, selection) { cm.message("Twinkle, twinkle, little star, how I wonder what you are."); cm.setQuestProgress(3114, 42); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/clear")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Clear")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Clear")); cm.dispose(); return; diff --git a/scripts/npc/2012033.js b/scripts/npc/2012033.js index 24379bd233..0f38111ea3 100644 --- a/scripts/npc/2012033.js +++ b/scripts/npc/2012033.js @@ -57,8 +57,8 @@ function action(mode, type, selection) { if(harpNote != nextNote) { cm.setQuestProgress(3114, 0); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/wrong_kor")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Failed")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/wrong_kor")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Failed")); cm.message("You've missed the note... Start over again."); } else { @@ -71,8 +71,8 @@ function action(mode, type, selection) { cm.message("Twinkle, twinkle, little star, how I wonder what you are."); cm.setQuestProgress(3114, 42); - cm.getPlayer().announce(PacketCreator.showEffect("quest/party/clear")); - cm.getPlayer().announce(PacketCreator.playSound("Party1/Clear")); + cm.getPlayer().sendPacket(PacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().sendPacket(PacketCreator.playSound("Party1/Clear")); cm.dispose(); return; diff --git a/scripts/npc/9000019.js b/scripts/npc/9000019.js index c928c5cbe7..07f0e8658b 100644 --- a/scripts/npc/9000019.js +++ b/scripts/npc/9000019.js @@ -27,7 +27,7 @@ function action(mode, type, selection) { } const PacketCreator = Java.type('tools.PacketCreator'); - cm.getClient().announce(PacketCreator.openRPSNPC()); + cm.getClient().sendPacket(PacketCreator.openRPSNPC()); cm.dispose(); } } diff --git a/scripts/npc/9201002.js b/scripts/npc/9201002.js index ab3f04b48d..2825cacd15 100644 --- a/scripts/npc/9201002.js +++ b/scripts/npc/9201002.js @@ -303,15 +303,15 @@ function action(mode, type, selection) { const PacketCreator = Java.type('tools.PacketCreator'); if (YamlConfig.config.server.WEDDING_BLESSER_SHOWFX) { var target = cm.getPlayer(); - target.announce(PacketCreator.showSpecialEffect(9)); + target.sendPacket(PacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, PacketCreator.showForeignEffect(target.getId(), 9), false); } else { var target = eim.getPlayerById(eim.getIntProperty("groomId")); - target.announce(PacketCreator.showSpecialEffect(9)); + target.sendPacket(PacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, PacketCreator.showForeignEffect(target.getId(), 9), false); target = eim.getPlayerById(eim.getIntProperty("brideId")); - target.announce(PacketCreator.showSpecialEffect(9)); + target.sendPacket(PacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, PacketCreator.showForeignEffect(target.getId(), 9), false); } @@ -357,8 +357,8 @@ function action(mode, type, selection) { partner.setMarriageItemId(marriageRingId); //var marriageId = eim.getIntProperty("weddingId"); - //player.announce(Wedding.OnMarriageResult(marriageId, player, true)); - //partner.announce(Wedding.OnMarriageResult(marriageId, player, true)); + //player.sendPacket(Wedding.OnMarriageResult(marriageId, player, true)); + //partner.sendPacket(Wedding.OnMarriageResult(marriageId, player, true)); giveCoupleBlessings(eim, player, partner); diff --git a/scripts/npc/9201011.js b/scripts/npc/9201011.js index a10562cef3..f41d49c2a5 100644 --- a/scripts/npc/9201011.js +++ b/scripts/npc/9201011.js @@ -173,15 +173,15 @@ function action(mode, type, selection) { const PacketCreator = Java.type('tools.PacketCreator'); if(YamlConfig.config.server.WEDDING_BLESSER_SHOWFX) { var target = cm.getPlayer(); - target.announce(PacketCreator.showSpecialEffect(9)); + target.sendPacket(PacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, PacketCreator.showForeignEffect(target.getId(), 9), false); } else { var target = eim.getPlayerById(eim.getIntProperty("groomId")); - target.announce(PacketCreator.showSpecialEffect(9)); + target.sendPacket(PacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, PacketCreator.showForeignEffect(target.getId(), 9), false); target = eim.getPlayerById(eim.getIntProperty("brideId")); - target.announce(PacketCreator.showSpecialEffect(9)); + target.sendPacket(PacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, PacketCreator.showForeignEffect(target.getId(), 9), false); } @@ -227,8 +227,8 @@ function action(mode, type, selection) { partner.setMarriageItemId(marriageRingId); //var marriageId = eim.getIntProperty("weddingId"); - //player.announce(Wedding.OnMarriageResult(marriageId, player, true)); - //partner.announce(Wedding.OnMarriageResult(marriageId, player, true)); + //player.sendPacket(Wedding.OnMarriageResult(marriageId, player, true)); + //partner.sendPacket(Wedding.OnMarriageResult(marriageId, player, true)); giveCoupleBlessings(eim, player, partner); diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index c9e9a5805b..bcabefea5b 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -309,7 +309,7 @@ function writeAllFeatures() { function start() { const PacketCreator = Java.type('tools.PacketCreator'); - cm.getPlayer().announce(PacketCreator.musicChange(anthemSong)); + cm.getPlayer().sendPacket(PacketCreator.musicChange(anthemSong)); status = -1; writeAllFeatures(); action(1, 0, 0); @@ -318,11 +318,11 @@ function start() { function action(mode, type, selection) { const PacketCreator = Java.type('tools.PacketCreator'); if (mode == -1) { - cm.getPlayer().announce(PacketCreator.musicChange(ambientSong)); + cm.getPlayer().sendPacket(PacketCreator.musicChange(ambientSong)); cm.dispose(); } else { if (mode == 0 && type > 0) { - cm.getPlayer().announce(PacketCreator.musicChange(ambientSong)); + cm.getPlayer().sendPacket(PacketCreator.musicChange(ambientSong)); cm.dispose(); return; } @@ -356,7 +356,7 @@ function action(mode, type, selection) { cm.sendPrev(sendStr); } else { - cm.getPlayer().announce(PacketCreator.musicChange(ambientSong)); + cm.getPlayer().sendPacket(PacketCreator.musicChange(ambientSong)); cm.dispose(); } } diff --git a/scripts/npc/MagatiaPassword.js b/scripts/npc/MagatiaPassword.js index 9d54d25693..a4c10f40ab 100644 --- a/scripts/npc/MagatiaPassword.js +++ b/scripts/npc/MagatiaPassword.js @@ -22,7 +22,7 @@ function action(mode, type, selection){ if(cm.getText() == cm.getQuestProgress(3360)){ cm.setQuestProgress(3360, 1); const PacketCreator = Java.type('tools.PacketCreator'); - cm.getPlayer().announce(PacketCreator.playPortalSound()); + cm.getPlayer().sendPacket(PacketCreator.playPortalSound()); cm.warp(261030000, "sp_" + ((cm.getMapId() == 261010000) ? "jenu" : "alca")); } else { diff --git a/src/main/java/client/BuddyList.java b/src/main/java/client/BuddyList.java index 83ed697282..f7579c5b9a 100644 --- a/src/main/java/client/BuddyList.java +++ b/src/main/java/client/BuddyList.java @@ -21,6 +21,7 @@ */ package client; +import net.packet.Packet; import net.server.PlayerStorage; import tools.DatabaseConnection; import tools.PacketCreator; @@ -126,12 +127,12 @@ public class BuddyList { } } - public void broadcast(byte[] packet, PlayerStorage pstorage) { + public void broadcast(Packet packet, PlayerStorage pstorage) { for(int bid : getBuddyIds()) { MapleCharacter chr = pstorage.getCharacterById(bid); if(chr != null && chr.isLoggedinWorld()) { - chr.announce(packet); + chr.sendPacket(packet); } } } @@ -167,7 +168,7 @@ public class BuddyList { public void addBuddyRequest(MapleClient c, int cidFrom, String nameFrom, int channelFrom) { put(new BuddylistEntry(nameFrom, "Default Group", cidFrom, channelFrom, false)); if (pendingRequests.isEmpty()) { - c.announce(PacketCreator.requestBuddylistAdd(cidFrom, c.getPlayer().getId(), nameFrom)); + c.sendPacket(PacketCreator.requestBuddylistAdd(cidFrom, c.getPlayer().getId(), nameFrom)); } else { pendingRequests.push(new CharacterNameAndId(cidFrom, nameFrom)); } diff --git a/src/main/java/client/MapleCharacter.java b/src/main/java/client/MapleCharacter.java index e062f6b776..edb7fc099f 100644 --- a/src/main/java/client/MapleCharacter.java +++ b/src/main/java/client/MapleCharacter.java @@ -45,6 +45,7 @@ import net.server.Server; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.guild.GuildPackets; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; @@ -76,7 +77,7 @@ import server.partyquest.PartyQuest; import server.quest.MapleQuest; import tools.*; import tools.exceptions.NotEnabledException; -import tools.packets.Wedding; +import tools.packets.WeddingPackets; import java.awt.*; import java.lang.ref.WeakReference; @@ -295,7 +296,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { statup.add(new Pair<>(s.getKey(), s.getValue())); } - announce(PacketCreator.updatePlayerStats(statup, true, MapleCharacter.this)); + sendPacket(PacketCreator.updatePlayerStats(statup, true, MapleCharacter.this)); } }); @@ -758,7 +759,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } combocounter = (short) Math.min(30000, count); if (count > 0) { - announce(PacketCreator.showCombo(combocounter)); + sendPacket(PacketCreator.showCombo(combocounter)); } } @@ -824,7 +825,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (isGM() && hide != this.hidden) { if (!hide) { this.hidden = false; - announce(PacketCreator.getGMEffect(0x10, (byte) 0)); + sendPacket(PacketCreator.getGMEffect(0x10, (byte) 0)); List dsstat = Collections.singletonList(MapleBuffStat.DARKSIGHT); getMap().broadcastGMMessage(this, PacketCreator.cancelForeignBuff(id, dsstat), false); getMap().broadcastSpawnPlayerMapObjectMessage(this, this, false); @@ -839,7 +840,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } else { this.hidden = true; - announce(PacketCreator.getGMEffect(0x10, (byte) 1)); + sendPacket(PacketCreator.getGMEffect(0x10, (byte) 1)); if (!login) { getMap().broadcastNONGMMessage(this, PacketCreator.removePlayerFromMap(getId()), false); } @@ -847,7 +848,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { getMap().broadcastGMMessage(this, PacketCreator.giveForeignBuff(id, ldsstat), false); this.releaseControlledMonsters(); } - announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); } } @@ -872,7 +873,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private void cancelPlayerBuffs(List buffstats) { if (client.getChannelServer().getPlayerStorage().getCharacterById(getId()) != null) { updateLocalStats(); - client.announce(PacketCreator.cancelBuff(buffstats)); + sendPacket(PacketCreator.cancelBuff(buffstats)); if (buffstats.size() > 0) { getMap().broadcastMessage(this, PacketCreator.cancelForeignBuff(getId(), buffstats), false); } @@ -1138,7 +1139,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { statup.add(new Pair<>(MapleStat.AVAILABLEAP, remainingAp)); statup.add(new Pair<>(MapleStat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())])); statup.add(new Pair<>(MapleStat.JOB, job.getId())); - client.announce(PacketCreator.updatePlayerStats(statup, true, this)); + sendPacket(PacketCreator.updatePlayerStats(statup, true, this)); } finally { statWlock.unlock(); effLock.unlock(); @@ -1182,7 +1183,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { broadcastAcquaintances(PacketCreator.serverNotice(type, message)); } - public void broadcastAcquaintances(byte[] packet) { + public void broadcastAcquaintances(Packet packet) { buddylist.broadcast(packet, getWorldServer().getPlayerStorage()); MapleFamily family = getFamily(); if(family != null) { @@ -1196,10 +1197,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { /* if(partnerid > 0) { - partner.announce(packet); not yet implemented + partner.sendPacket(packet); not yet implemented } */ - announce(packet); + sendPacket(packet); } public void changeKeybinding(int key, MapleKeyBinding keybinding) { @@ -1663,7 +1664,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if(partnerId > 0) { final MapleCharacter partner = getWorldServer().getPlayerStorage().getCharacterById(partnerId); if(partner != null && !partner.isAwayFromWorld()) { - partner.announce(Wedding.OnNotifyWeddingPartnerTransfer(id, mapid)); + partner.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(id, mapid)); } } } @@ -1672,7 +1673,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleInviteCoordinator.removePlayerIncomingInvites(id); } - private void changeMapInternal(final MapleMap to, final Point pos, final byte[] warpPacket) { + private void changeMapInternal(final MapleMap to, final Point pos, Packet warpPacket) { if (!canWarpMap) { return; } @@ -1690,7 +1691,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } final MapleParty k = e; - client.announce(warpPacket); + sendPacket(warpPacket); map.removePlayer(this); if (client.getChannelServer().getPlayerStorage().getCharacterById(getId()) != null) { map = to; @@ -1702,7 +1703,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { try { if (party != null) { mpc.setMapId(to.getId()); - client.announce(PacketCreator.updateParty(client.getChannel(), party, PartyOperation.SILENT_UPDATE, null)); + sendPacket(PacketCreator.updateParty(client.getChannel(), party, PartyOperation.SILENT_UPDATE, null)); updatePartyMemberHPInternal(); } } finally { @@ -1739,7 +1740,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } // if this map has obstacle components moving, make it do so for this client - announce(PacketCreator.environmentMoveList(map.getEnvironment().entrySet())); + sendPacket(PacketCreator.environmentMoveList(map.getEnvironment().entrySet())); } } @@ -1759,11 +1760,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (newLevel > -1) { skills.put(skill, new SkillEntry(newLevel, newMasterlevel, expiration)); if (!GameConstants.isHiddenSkills(skill.getId())) { - this.client.announce(PacketCreator.updateSkill(skill.getId(), newLevel, newMasterlevel, expiration)); + sendPacket(PacketCreator.updateSkill(skill.getId(), newLevel, newMasterlevel, expiration)); } } else { skills.remove(skill); - this.client.announce(PacketCreator.updateSkill(skill.getId(), newLevel, newMasterlevel, -1)); //Shouldn't use expiration anymore :) + sendPacket(PacketCreator.updateSkill(skill.getId(), newLevel, newMasterlevel, -1)); //Shouldn't use expiration anymore :) try (Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("DELETE FROM skills WHERE skillid = ? AND characterid = ?")) { ps.setInt(1, skill.getId()); @@ -1800,7 +1801,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { return; } - client.announce(PacketCreator.showOwnBerserk(skilllevel, berserk)); + sendPacket(PacketCreator.showOwnBerserk(skilllevel, berserk)); if (!isHidden) { getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showBerserk(getId(), skilllevel, berserk), false); } else { @@ -1924,7 +1925,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (ob instanceof MapleMapItem) { MapleMapItem mapitem = (MapleMapItem) ob; if (System.currentTimeMillis() - mapitem.getDropTime() < 400 || !mapitem.canBePickedBy(this)) { - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); return; } @@ -1937,13 +1938,13 @@ public class MapleCharacter extends AbstractMapleCharacterObject { mapitem.lockItem(); try { if (mapitem.isPickedUp()) { - client.announce(PacketCreator.showItemUnavailable()); - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.showItemUnavailable()); + sendPacket(PacketCreator.enableActions()); return; } boolean isPet = petIndex > -1; - final byte[] pickupPacket = PacketCreator.removeItemFromMap(mapitem.getObjectId(), (isPet) ? 5 : 2, this.getId(), isPet, petIndex); + final Packet pickupPacket = PacketCreator.removeItemFromMap(mapitem.getObjectId(), (isPet) ? 5 : 2, this.getId(), isPet, petIndex); Item mItem = mapitem.getItem(); boolean hasSpaceInventory = true; @@ -1976,21 +1977,21 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } else if (MapleInventoryManipulator.addFromDrop(client, mItem, true)) { this.getMap().pickItemDrop(pickupPacket, mapitem); } else { - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); return; } } else { - client.announce(PacketCreator.showItemUnavailable()); - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.showItemUnavailable()); + sendPacket(PacketCreator.enableActions()); return; } - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); return; } if (!this.needQuestItem(mapitem.getQuest(), mapitem.getItemId())) { - client.announce(PacketCreator.showItemUnavailable()); - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.showItemUnavailable()); + sendPacket(PacketCreator.enableActions()); return; } @@ -2011,7 +2012,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { itemScript = info; } else { if (!MapleInventoryManipulator.addFromDrop(client, mItem, true)) { - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); return; } } @@ -2027,14 +2028,14 @@ public class MapleCharacter extends AbstractMapleCharacterObject { updateAriantScore(); } } else { - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); return; } this.getMap().pickItemDrop(pickupPacket, mapitem); } else if(!hasSpaceInventory) { - client.announce(PacketCreator.getInventoryFull()); - client.announce(PacketCreator.getShowInventoryFull()); + sendPacket(PacketCreator.getInventoryFull()); + sendPacket(PacketCreator.getShowInventoryFull()); } } finally { mapitem.unlockItem(); @@ -2045,7 +2046,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ism.runItemScript(client, itemScript); } } - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); } public int countItem(int itemid) { @@ -2076,7 +2077,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void announceBattleshipHp() { - announce(PacketCreator.skillCooldown(5221999, battleshipHp)); + sendPacket(PacketCreator.skillCooldown(5221999, battleshipHp)); } public void decreaseBattleshipHp(int decrease) { @@ -2084,7 +2085,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (battleshipHp <= 0) { Skill battleship = SkillFactory.getSkill(Corsair.BATTLE_SHIP); int cooldown = battleship.getEffect(getSkillLevel(battleship)).getCooldown(); - announce(PacketCreator.skillCooldown(Corsair.BATTLE_SHIP, cooldown)); + sendPacket(PacketCreator.skillCooldown(Corsair.BATTLE_SHIP, cooldown)); addCooldown(Corsair.BATTLE_SHIP, Server.getInstance().getCurrentTime(), (long)(cooldown * 1000)); removeCooldown(5221999); cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING); @@ -2116,7 +2117,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private void nextPendingRequest(MapleClient c) { CharacterNameAndId pendingBuddyRequest = c.getPlayer().getBuddylist().pollPendingRequest(); if (pendingBuddyRequest != null) { - c.announce(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); + c.sendPacket(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); } } @@ -2134,7 +2135,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { notifyRemoteChannel(client, getWorldServer().find(otherCid), otherCid, BuddyList.BuddyOperation.DELETED); } bl.remove(otherCid); - client.announce(PacketCreator.updateBuddylist(getBuddylist().getBuddies())); + sendPacket(PacketCreator.updateBuddylist(getBuddylist().getBuddies())); nextPendingRequest(client); } @@ -2459,7 +2460,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if(MapleCharacter.this.getHp() < localmaxhp) { byte recHP = (byte) (healHP / YamlConfig.config.server.CHAIR_EXTRA_HEAL_MULTIPLIER); - client.announce(PacketCreator.showOwnRecovery(recHP)); + sendPacket(PacketCreator.showOwnRecovery(recHP)); getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showRecovery(id, recHP), false); } else if (MapleCharacter.this.getMp() >= localmaxmp) { stopChairTask(); // optimizing schedule management when player is already with full pool. @@ -2507,7 +2508,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if(MapleCharacter.this.getHp() < localmaxhp) { if(healHP > 0) { - client.announce(PacketCreator.showOwnRecovery(healHP)); + sendPacket(PacketCreator.showOwnRecovery(healHP)); getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showRecovery(id, healHP), false); } } @@ -2632,9 +2633,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { final List> debuff = Collections.singletonList(new Pair<>(disease, Integer.valueOf(skill.getX()))); if (disease != MapleDisease.SLOW) { - this.announce(PacketCreator.giveForeignDebuff(cid, debuff, skill)); + this.sendPacket(PacketCreator.giveForeignDebuff(cid, debuff, skill)); } else { - this.announce(PacketCreator.giveForeignSlowDebuff(cid, debuff, skill)); + this.sendPacket(PacketCreator.giveForeignSlowDebuff(cid, debuff, skill)); } } } @@ -2662,7 +2663,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } final List> debuff = Collections.singletonList(new Pair<>(disease, Integer.valueOf(skill.getX()))); - client.announce(PacketCreator.giveDebuff(debuff, skill)); + sendPacket(PacketCreator.giveDebuff(debuff, skill)); if (disease != MapleDisease.SLOW) { map.broadcastMessage(this, PacketCreator.giveForeignDebuff(id, debuff, skill), false); @@ -2675,7 +2676,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void dispelDebuff(MapleDisease debuff) { if (hasDisease(debuff)) { long mask = debuff.getValue(); - announce(PacketCreator.cancelDebuff(mask)); + sendPacket(PacketCreator.cancelDebuff(mask)); if (debuff != MapleDisease.SLOW) { map.broadcastMessage(this, PacketCreator.cancelForeignDebuff(id, mask), false); @@ -2790,7 +2791,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void dropMessage(int type, String message) { - client.announce(PacketCreator.serverNotice(type, message)); + sendPacket(PacketCreator.serverNotice(type, message)); } public void enteredScript(String script, int mapid) { @@ -2910,7 +2911,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleCoolDownValueHolder mcdvh = bel.getValue(); if(curTime >= mcdvh.startTime + mcdvh.length) { removeCooldown(mcdvh.skillId); - client.announce(PacketCreator.skillCooldown(mcdvh.skillId, 0)); + sendPacket(PacketCreator.skillCooldown(mcdvh.skillId, 0)); } } } @@ -2955,7 +2956,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { forceUpdateItem(item); //TEST :3 } else if (expiration != -1 && expiration < currenttime) { if (!ItemConstants.isPet(item.getItemId())) { - client.announce(PacketCreator.itemExpired(item.getItemId())); + sendPacket(PacketCreator.itemExpired(item.getItemId())); toberemove.add(item); if (ItemConstants.isRateCoupon(item.getItemId())) { deletedCoupon = true; @@ -2967,7 +2968,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } if (ItemConstants.isExpirablePet(item.getItemId())) { - client.announce(PacketCreator.itemExpired(item.getItemId())); + sendPacket(PacketCreator.itemExpired(item.getItemId())); toberemove.add(item); } else { item.setExpiration(-1); @@ -3018,7 +3019,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { final List mods = new LinkedList<>(); mods.add(new ModifyInventory(3, item)); mods.add(new ModifyInventory(0, item)); - client.announce(PacketCreator.modifyInventory(true, mods)); + sendPacket(PacketCreator.modifyInventory(true, mods)); } public void gainGachaExp() { @@ -3095,7 +3096,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { white = false; } - client.announce(PacketCreator.getShowExpGain((int) gain, equip, party, inChat, white)); + sendPacket(PacketCreator.getShowExpGain((int) gain, equip, party, inChat, white)); } private synchronized void gainExpInternal(long gain, int equip, int party, boolean show, boolean inChat, boolean white) { // need of method synchonization here detected thanks to MedicOP @@ -3159,10 +3160,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { updateSingleStat(MapleStat.FAME, thisFame); if (fromPlayer != null) { - fromPlayer.announce(PacketCreator.giveFameResponse(mode, getName(), thisFame)); - announce(PacketCreator.receiveFame(mode, fromPlayer.getName())); + fromPlayer.sendPacket(PacketCreator.giveFameResponse(mode, getName(), thisFame)); + sendPacket(PacketCreator.receiveFame(mode, fromPlayer.getName())); } else { - announce(PacketCreator.getShowFameGain(delta)); + sendPacket(PacketCreator.getShowFameGain(delta)); } return true; @@ -3202,15 +3203,15 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (gain != 0) { updateSingleStat(MapleStat.MESO, (int) nextMeso, enableActions); if (show) { - client.announce(PacketCreator.getShowMesoGain(gain, inChat)); + sendPacket(PacketCreator.getShowMesoGain(gain, inChat)); } } else { - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); } } public void genericGuildMessage(int code) { - this.client.announce(PacketCreator.genericGuildMessage((byte) code)); + this.sendPacket(GuildPackets.genericGuildMessage((byte) code)); } public int getAccountID() { @@ -4033,7 +4034,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } if (!inactiveStats.isEmpty()) { - client.announce(PacketCreator.cancelBuff(inactiveStats)); + sendPacket(PacketCreator.cancelBuff(inactiveStats)); getMap().broadcastMessage(this, PacketCreator.cancelForeignBuff(getId(), inactiveStats), false); } } @@ -4309,7 +4310,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (this.isRidingBattleship()) { List> statups = new ArrayList<>(1); statups.add(new Pair<>(MapleBuffStat.MONSTER_RIDING, 0)); - this.announce(PacketCreator.giveBuff(1932000, 5221006, statups)); + this.sendPacket(PacketCreator.giveBuff(1932000, 5221006, statups)); this.announceBattleshipHp(); } } @@ -4403,7 +4404,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } addHP(healEffect.getHp()); - client.announce(PacketCreator.showOwnBuffEffect(beholder, 2)); + sendPacket(PacketCreator.showOwnBuffEffect(beholder, 2)); getMap().broadcastMessage(MapleCharacter.this, PacketCreator.summonSkill(getId(), beholder, 5), true); getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showOwnBuffEffect(beholder, 2), false); } @@ -4421,9 +4422,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } buffEffect.applyTo(MapleCharacter.this); - client.announce(PacketCreator.showOwnBuffEffect(beholder, 2)); + sendPacket(PacketCreator.showOwnBuffEffect(beholder, 2)); getMap().broadcastMessage(MapleCharacter.this, PacketCreator.summonSkill(getId(), beholder, (int) (Math.random() * 3) + 6), true); - getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showBuffeffect(getId(), beholder, 2), false); + getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showBuffEffect(getId(), beholder, 2), false); } }, buffInterval, buffInterval); } @@ -4455,7 +4456,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } addHP(heal); - client.announce(PacketCreator.showOwnRecovery(heal)); + sendPacket(PacketCreator.showOwnRecovery(heal)); getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showRecovery(id, heal), false); } }, healInterval, healInterval); @@ -4813,7 +4814,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { Set exclItems = pe.getValue(); if (!exclItems.isEmpty()) { - client.announce(PacketCreator.loadExceptionList(this.getId(), pe.getKey(), petIndex, new ArrayList<>(exclItems))); + sendPacket(PacketCreator.loadExceptionList(this.getId(), pe.getKey(), petIndex, new ArrayList<>(exclItems))); chrLock.lock(); try { @@ -4837,7 +4838,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { Set exclItems = pe.getValue(); if (!exclItems.isEmpty()) { - c.announce(PacketCreator.loadExceptionList(this.getId(), pe.getKey(), petIndex, new ArrayList<>(exclItems))); + c.sendPacket(PacketCreator.loadExceptionList(this.getId(), pe.getKey(), petIndex, new ArrayList<>(exclItems))); } } } @@ -5936,7 +5937,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { //Server.getInstance().getGuild(guildid, world, mgc).gainGP(40); int allianceId = getGuild().getAllianceId(); if (allianceId > 0) { - Server.getInstance().allianceMessage(allianceId, PacketCreator.updateAllianceJobLevel(this), getId(), -1); + Server.getInstance().allianceMessage(allianceId, GuildPackets.updateAllianceJobLevel(this), getId(), -1); } } catch (Exception e) { e.printStackTrace(); @@ -5955,10 +5956,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.ENERGY_CHARGE, energybar)); setBuffedValue(MapleBuffStat.ENERGY_CHARGE, energybar); - client.announce(PacketCreator.giveBuff(energybar, 0, stat)); - client.announce(PacketCreator.showOwnBuffEffect(energycharge.getId(), 2)); - getMap().broadcastMessage(this, PacketCreator.showBuffeffect(id, energycharge.getId(), 2)); - getMap().broadcastMessage(this, PacketCreator.giveForeignBuff(energybar, stat)); + sendPacket(PacketCreator.giveBuff(energybar, 0, stat)); + sendPacket(PacketCreator.showOwnBuffEffect(energycharge.getId(), 2)); + getMap().broadcastPacket(this, PacketCreator.showBuffEffect(id, energycharge.getId(), 2)); + getMap().broadcastPacket(this, PacketCreator.giveForeignBuff(energybar, stat)); } if (energybar >= 10000 && energybar < 11000) { energybar = 15000; @@ -5969,8 +5970,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { energybar = 0; List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.ENERGY_CHARGE, energybar)); setBuffedValue(MapleBuffStat.ENERGY_CHARGE, energybar); - client.announce(PacketCreator.giveBuff(energybar, 0, stat)); - getMap().broadcastMessage(chr, PacketCreator.cancelForeignFirstDebuff(id, ((long) 1) << 50)); + sendPacket(PacketCreator.giveBuff(energybar, 0, stat)); + getMap().broadcastPacket(chr, PacketCreator.cancelForeignFirstDebuff(id, ((long) 1) << 50)); } }, ceffect.getDuration()); } @@ -5981,7 +5982,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { Skill combo = SkillFactory.getSkill(skillid); List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.COMBO, 1)); setBuffedValue(MapleBuffStat.COMBO, 1); - client.announce(PacketCreator.giveBuff(skillid, combo.getEffect(getSkillLevel(combo)).getDuration() + (int) ((getBuffedStarttime(MapleBuffStat.COMBO) - System.currentTimeMillis())), stat)); + sendPacket(PacketCreator.giveBuff(skillid, combo.getEffect(getSkillLevel(combo)).getDuration() + (int) ((getBuffedStarttime(MapleBuffStat.COMBO) - System.currentTimeMillis())), stat)); getMap().broadcastMessage(this, PacketCreator.giveForeignBuff(getId(), stat), false); } @@ -6440,7 +6441,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { statup.add(new Pair<>(MapleStat.STR, str)); statup.add(new Pair<>(MapleStat.DEX, dex)); - client.announce(PacketCreator.updatePlayerStats(statup, true, this)); + sendPacket(PacketCreator.updatePlayerStats(statup, true, this)); } finally { statWlock.unlock(); effLock.unlock(); @@ -6498,7 +6499,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleFamilyEntry senior = familyEntry.getSenior(); if(senior != null) { //only send the message to direct senior MapleCharacter seniorChr = senior.getChr(); - if(seniorChr != null) seniorChr.announce(PacketCreator.levelUpMessage(1, level, getName())); + if(seniorChr != null) seniorChr.sendPacket(PacketCreator.levelUpMessage(1, level, getName())); } } } @@ -7496,7 +7497,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void yellowMessage(String m) { - announce(PacketCreator.sendYellowTip(m)); + sendPacket(PacketCreator.sendYellowTip(m)); } public void raiseQuestMobCount(int id) { @@ -7604,7 +7605,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } unsitChairInternal(); - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); } private void unsitChairInternal() { @@ -7622,7 +7623,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { getMap().broadcastMessage(this, PacketCreator.showChair(this.getId(), 0), false); } - announce(PacketCreator.cancelChair(-1)); + sendPacket(PacketCreator.cancelChair(-1)); } public void sitChair(int itemId) { @@ -7632,14 +7633,14 @@ public class MapleCharacter extends AbstractMapleCharacterObject { setChair(itemId); getMap().broadcastMessage(this, PacketCreator.showChair(this.getId(), itemId), false); } - announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); } else if (itemId >= 0) { // sit on map chair if (chair.get() < 0) { setChair(itemId); if (registerChairBuff()) { getMap().broadcastMessage(this, PacketCreator.giveForeignChairSkillEffect(this.getId()), false); } - announce(PacketCreator.cancelChair(itemId)); + sendPacket(PacketCreator.cancelChair(itemId)); } } else { // stand up unsitChairInternal(); @@ -7684,8 +7685,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } addHP(-bloodEffect.getX()); - announce(PacketCreator.showOwnBuffEffect(bloodEffect.getSourceId(), 5)); - getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showBuffeffect(getId(), bloodEffect.getSourceId(), 5), false); + sendPacket(PacketCreator.showOwnBuffEffect(bloodEffect.getSourceId(), 5)); + getMap().broadcastMessage(MapleCharacter.this, PacketCreator.showBuffEffect(getId(), bloodEffect.getSourceId(), 5), false); } }, 4000, 4000); } @@ -7909,7 +7910,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { enforceMaxHpMp(); if (!hpmpupdate.isEmpty()) { - client.announce(PacketCreator.updatePlayerStats(hpmpupdate, true, this)); + sendPacket(PacketCreator.updatePlayerStats(hpmpupdate, true, this)); } if (oldmaxhp != localmaxhp) { // thanks Wh1SK3Y (Suwaidy) for pointing out a deadlock occuring related to party members HP @@ -7927,7 +7928,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { try { if (party != null) { for (MapleCharacter partychar : this.getPartyMembersOnSameMap()) { - announce(PacketCreator.updatePartyMemberHP(partychar.getId(), partychar.getHp(), partychar.getCurrentMaxHp())); + sendPacket(PacketCreator.updatePartyMemberHP(partychar.getId(), partychar.getHp(), partychar.getCurrentMaxHp())); } } } finally { @@ -7944,7 +7945,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (mcvh.skillId != id) { coolDowns.remove(mcvh.skillId); if (packet) { - client.announce(PacketCreator.skillCooldown(mcvh.skillId, 0)); + sendPacket(PacketCreator.skillCooldown(mcvh.skillId, 0)); } } } @@ -8743,7 +8744,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void sendPolice(int greason, String reason, int duration) { - announce(PacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for %s.#k", "Cosmic", reason))); + sendPacket(PacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for %s.#k", "Cosmic", reason))); this.isbanned = true; TimerManager.getInstance().schedule(new Runnable() { @Override @@ -8763,7 +8764,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { FilePrinter.print(FilePrinter.AUTOBAN_DC, message); } //Server.getInstance().broadcastGMMessage(0, PacketCreator.serverNotice(1, getName() + " received this - " + text)); - //announce(PacketCreator.sendPolice(text)); + //sendPacket(PacketCreator.sendPolice(text)); //this.isbanned = true; //TimerManager.getInstance().schedule(new Runnable() { // @Override @@ -8774,7 +8775,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void sendKeymap() { - client.announce(PacketCreator.getKeymap(keymap)); + sendPacket(PacketCreator.getKeymap(keymap)); } public void sendQuickmap() { @@ -8785,12 +8786,12 @@ public class MapleCharacter extends AbstractMapleCharacterObject { pQuickslotKeyMapped = new MapleQuickslotBinding(MapleQuickslotBinding.DEFAULT_QUICKSLOTS); } - this.announce(PacketCreator.QuickslotMappedInit(pQuickslotKeyMapped)); + this.sendPacket(PacketCreator.QuickslotMappedInit(pQuickslotKeyMapped)); } public void sendMacros() { // Always send the macro packet to fix a client side bug when switching characters. - client.announce(PacketCreator.getMacros(skillMacros)); + sendPacket(PacketCreator.getMacros(skillMacros)); } public SkillMacro[] getMacros() { @@ -8827,7 +8828,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void setBuddyCapacity(int capacity) { buddylist.setCapacity(capacity); - client.announce(PacketCreator.updateBuddyCapacity(capacity)); + sendPacket(PacketCreator.updateBuddyCapacity(capacity)); } public void setBuffedValue(MapleBuffStat effect, int value) { @@ -9301,7 +9302,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (newLimit != -1) { this.saveCharToDB(); if (update) { - client.announce(PacketCreator.updateInventorySlotLimit(type, newLimit)); + sendPacket(PacketCreator.updateInventorySlotLimit(type, newLimit)); } return true; } else { @@ -9603,7 +9604,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void showDojoClock() { if (GameConstants.isDojoBossArea(map.getId())) { - client.announce(PacketCreator.getClock((int) (getDojoTimeLeft() / 1000))); + sendPacket(PacketCreator.getClock((int) (getDojoTimeLeft() / 1000))); } } @@ -9633,7 +9634,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { strLines.add(""); strLines.add(this.getClient().getChannelServer().getServerMessage().isEmpty() ? 0 : 1, "Get off my lawn!!"); - this.announce(PacketCreator.getAvatarMega(mapOwner, medal, this.getClient().getChannel(), 5390006, strLines, true)); + this.sendPacket(PacketCreator.getAvatarMega(mapOwner, medal, this.getClient().getChannel(), 5390006, strLines, true)); } } @@ -9653,7 +9654,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { rs.last(); int count = rs.getRow(); rs.first(); - client.announce(PacketCreator.showNotes(rs, count)); + sendPacket(PacketCreator.showNotes(rs, count)); } } catch (SQLException e) { e.printStackTrace(); @@ -9750,11 +9751,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void startMapEffect(String msg, int itemId, int duration) { final MapleMapEffect mapEffect = new MapleMapEffect(msg, itemId); - getClient().announce(mapEffect.makeStartData()); + sendPacket(mapEffect.makeStartData()); TimerManager.getInstance().schedule(new Runnable() { @Override public void run() { - getClient().announce(mapEffect.makeDestroyData()); + sendPacket(mapEffect.makeDestroyData()); } }, duration); } @@ -9787,8 +9788,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { removePet(pet, shift_left); commitExcludedItems(); - client.announce(PacketCreator.petStatUpdate(this)); - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.petStatUpdate(this)); + sendPacket(PacketCreator.enableActions()); } public void updateMacros(int position, SkillMacro updateMacro) { @@ -9809,7 +9810,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int curmaxhp = getCurrentMaxHp(); int curhp = getHp(); for (MapleCharacter partychar : this.getPartyMembersOnSameMap()) { - partychar.announce(PacketCreator.updatePartyMemberHP(getId(), curhp, curmaxhp)); + partychar.sendPacket(PacketCreator.updatePartyMemberHP(getId(), curhp, curmaxhp)); } } } @@ -9859,20 +9860,20 @@ public class MapleCharacter extends AbstractMapleCharacterObject { switch (questUpdate.getLeft()) { case UPDATE: - announce(PacketCreator.updateQuest(chr, (MapleQuestStatus) objs[0], (Boolean) objs[1])); + sendPacket(PacketCreator.updateQuest(chr, (MapleQuestStatus) objs[0], (Boolean) objs[1])); break; case FORFEIT: - announce(PacketCreator.forfeitQuest((Short) objs[0])); + sendPacket(PacketCreator.forfeitQuest((Short) objs[0])); break; case COMPLETE: - announce(PacketCreator.completeQuest((Short) objs[0], (Long) objs[1])); + sendPacket(PacketCreator.completeQuest((Short) objs[0], (Long) objs[1])); break; case INFO: MapleQuestStatus qs = (MapleQuestStatus) objs[0]; - announce(PacketCreator.updateQuestInfo(qs.getQuest().getId(), qs.getNpc())); + sendPacket(PacketCreator.updateQuestInfo(qs.getQuest().getId(), qs.getNpc())); break; } } @@ -9933,7 +9934,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private void expireQuest(MapleQuest quest) { if (quest.forfeit(this)) { - announce(PacketCreator.questExpire(quest.getId())); + sendPacket(PacketCreator.questExpire(quest.getId())); } } @@ -10028,7 +10029,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void questTimeLimit(final MapleQuest quest, int seconds) { registerQuestExpire(quest, seconds * 1000); - announce(PacketCreator.addQuestTimeLimit(quest.getId(), seconds * 1000)); + sendPacket(PacketCreator.addQuestTimeLimit(quest.getId(), seconds * 1000)); } public void questTimeLimit2(final MapleQuest quest, long expires) { @@ -10046,12 +10047,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private void updateSingleStat(MapleStat stat, int newval, boolean itemReaction) { - announce(PacketCreator.updatePlayerStats(Collections.singletonList(new Pair<>(stat, Integer.valueOf(newval))), itemReaction, this)); - } - - @Deprecated(forRemoval = true) - public void announce(final byte[] packet) { - client.announce(packet); + sendPacket(PacketCreator.updatePlayerStats(Collections.singletonList(new Pair<>(stat, Integer.valueOf(newval))), itemReaction, this)); } public void sendPacket(Packet packet) { @@ -10070,16 +10066,16 @@ public class MapleCharacter extends AbstractMapleCharacterObject { @Override public void sendDestroyData(MapleClient client) { - client.announce(PacketCreator.removePlayerFromMap(this.getObjectId())); + client.sendPacket(PacketCreator.removePlayerFromMap(this.getObjectId())); } @Override public void sendSpawnData(MapleClient client) { if (!this.isHidden() || client.getPlayer().gmLevel() > 1) { - client.announce(PacketCreator.spawnPlayerMapObject(client, this, false)); + client.sendPacket(PacketCreator.spawnPlayerMapObject(client, this, false)); if (buffEffects.containsKey(getJobMapChair(job))) { // mustn't effLock, chrLock sendSpawnData - client.announce(PacketCreator.giveForeignChairSkillEffect(id)); + client.sendPacket(PacketCreator.giveForeignChairSkillEffect(id)); } } @@ -10154,7 +10150,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void blockPortal(String scriptName) { if (!blockedPortals.contains(scriptName) && scriptName != null) { blockedPortals.add(scriptName); - client.announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); } } @@ -10178,7 +10174,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void updateAreaInfo(int area, String info) { area_info.put(Short.valueOf((short) area), info); - announce(PacketCreator.updateAreaInfo(area, info)); + sendPacket(PacketCreator.updateAreaInfo(area, info)); } public String getAreaInfo(int area) { @@ -10195,7 +10191,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } this.ban(reason); - announce(PacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for HACK reason.#k", "Cosmic"))); + sendPacket(PacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for HACK reason.#k", "Cosmic"))); TimerManager.getInstance().schedule(new Runnable() { @Override public void run() { @@ -11244,7 +11240,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (this.getCP() > this.getTotalCP()) { this.setTotalCP(this.getCP()); } - this.getClient().announce(PacketCreator.CPUpdate(false, this.getCP(), this.getTotalCP(), getTeam())); + sendPacket(PacketCreator.CPUpdate(false, this.getCP(), this.getTotalCP(), getTeam())); if (this.getParty() != null && getTeam() != -1) { this.getMap().broadcastMessage(PacketCreator.CPUpdate(true, this.getMonsterCarnival().getCP(team), this.getMonsterCarnival().getTotalCP(team), getTeam())); } else { diff --git a/src/main/java/client/MapleClient.java b/src/main/java/client/MapleClient.java index e718af4908..d5e5984a50 100644 --- a/src/main/java/client/MapleClient.java +++ b/src/main/java/client/MapleClient.java @@ -30,9 +30,7 @@ import io.netty.handler.timeout.IdleStateEvent; import net.MaplePacketHandler; import net.PacketProcessor; import net.netty.InvalidPacketHeaderException; -import net.packet.ByteBufOutPacket; import net.packet.InPacket; -import net.packet.OutPacket; import net.packet.Packet; import net.packet.logging.LoggingUtil; import net.packet.logging.MapleLogger; @@ -45,6 +43,7 @@ import net.server.coordinator.session.Hwid; import net.server.coordinator.session.IpAddresses; import net.server.coordinator.session.SessionCoordinator; import net.server.coordinator.session.SessionCoordinator.AntiMulticlientResult; +import net.server.guild.GuildPackets; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; import net.server.world.*; @@ -209,7 +208,7 @@ public class MapleClient extends ChannelInboundHandlerAdapter { handler.handlePacket(accessor, this); } catch (final Throwable t) { FilePrinter.printError(FilePrinter.PACKET_HANDLER + handler.getClass().getName() + ".txt", t, "Error for " + (getPlayer() == null ? "" : "player ; " + getPlayer() + " on map ; " + getPlayer().getMapId() + " - ") + "account ; " + getAccountName() + "\r\n" + accessor); - //client.announce(PacketCreator.enableActions());//bugs sometimes + //client.sendPacket(PacketCreator.enableActions());//bugs sometimes } } @@ -308,7 +307,7 @@ public class MapleClient extends ChannelInboundHandlerAdapter { } public void sendCharList(int server) { - this.announce(PacketCreator.getCharList(this, server, 0)); + this.sendPacket(PacketCreator.getCharList(this, server, 0)); } public List loadCharacters(int serverId) { @@ -1000,7 +999,7 @@ public class MapleClient extends ChannelInboundHandlerAdapter { if (guild != null) { final Server server = Server.getInstance(); server.setGuildMemberOnline(player, false, player.getClient().getChannel()); - player.getClient().announce(PacketCreator.showGuildInfo(player)); + player.sendPacket(GuildPackets.showGuildInfo(player)); } if (bl != null) { wserv.loggedOff(player.getName(), player.getId(), channel, player.getBuddylist().getBuddyIds()); @@ -1145,7 +1144,7 @@ public class MapleClient extends ChannelInboundHandlerAdapter { public void checkIfIdle(final IdleStateEvent event) { final long pingedAt = System.currentTimeMillis(); - announce(PacketCreator.getPing()); + sendPacket(PacketCreator.getPing()); TimerManager.getInstance().schedule(() -> { try { if (lastPong < pingedAt) { @@ -1415,15 +1414,15 @@ public class MapleClient extends ChannelInboundHandlerAdapter { private void announceDisableServerMessage() { if (!this.getWorldServer().registerDisabledServerMessage(player.getId())) { - announce(PacketCreator.serverMessage("")); + sendPacket(PacketCreator.serverMessage("")); } } public void announceServerMessage() { - announce(PacketCreator.serverMessage(this.getChannelServer().getServerMessage())); + sendPacket(PacketCreator.serverMessage(this.getChannelServer().getServerMessage())); } - public synchronized void announceBossHpBar(MapleMonster mm, final int mobHash, final byte[] packet) { + public synchronized void announceBossHpBar(MapleMonster mm, final int mobHash, Packet packet) { long timeNow = System.currentTimeMillis(); int targetHash = player.getTargetHpBarHash(); @@ -1431,55 +1430,31 @@ public class MapleClient extends ChannelInboundHandlerAdapter { if (timeNow - player.getTargetHpBarTime() >= 5 * 1000) { // is there a way to INTERRUPT this annoying thread running on the client that drops the boss bar after some time at every attack? announceDisableServerMessage(); - announce(packet); + sendPacket(packet); player.setTargetHpBarHash(mobHash); player.setTargetHpBarTime(timeNow); } } else { announceDisableServerMessage(); - announce(packet); + sendPacket(packet); player.setTargetHpBarTime(timeNow); } } - @Deprecated(forRemoval = true, since = "Netty migration") - public void announce(final byte[] packet) { // thanks GitGud for noticing an opportunity for improvement by overcoming "synchronized announce" - announcerLock.lock(); - try { - // session.write(packet); - sendPacket(packet); - } finally { - announcerLock.unlock(); - } - } - - // Workaround for old packets. All uses of Client#announce(byte[]) should be migrated to Client#sendPacket(OutPacket) - private void sendPacket(final byte[] packet) { - announcerLock.lock(); - try { - OutPacket outPacket = new ByteBufOutPacket(); - outPacket.writeBytes(packet); - - ioChannel.writeAndFlush(outPacket); - } finally { - announcerLock.unlock(); - } - } - public void sendPacket(Packet packet) { announcerLock.lock(); try { - ioChannel.writeAndFlush(packet.getBytes()); + ioChannel.writeAndFlush(packet); } finally { announcerLock.unlock(); } } public void announceHint(String msg, int length) { - announce(PacketCreator.sendHint(msg, length, 10)); - announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.sendHint(msg, length, 10)); + sendPacket(PacketCreator.enableActions()); } public void changeChannel(int channel) { @@ -1489,18 +1464,18 @@ public class MapleClient extends ChannelInboundHandlerAdapter { return; } if (!player.isAlive() || FieldLimit.CANNOTMIGRATE.check(player.getMap().getFieldLimit())) { - announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.enableActions()); return; } else if (MapleMiniDungeonInfo.isDungeonMap(player.getMapId())) { - announce(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon.")); - announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon.")); + sendPacket(PacketCreator.enableActions()); return; } String[] socket = Server.getInstance().getInetSocket(this, getWorld(), channel); if (socket == null) { - announce(PacketCreator.serverNotice(1, "Channel " + channel + " is currently disabled. Try another channel.")); - announce(PacketCreator.enableActions()); + sendPacket(PacketCreator.serverNotice(1, "Channel " + channel + " is currently disabled. Try another channel.")); + sendPacket(PacketCreator.enableActions()); return; } @@ -1531,7 +1506,7 @@ public class MapleClient extends ChannelInboundHandlerAdapter { player.setSessionTransitionState(); try { - announce(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); + sendPacket(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); } catch (IOException e) { e.printStackTrace(); } @@ -1587,7 +1562,7 @@ public class MapleClient extends ChannelInboundHandlerAdapter { } public void enableCSActions() { - announce(PacketCreator.enableCSUse(player)); + sendPacket(PacketCreator.enableCSUse(player)); } public boolean canBypassPin() { diff --git a/src/main/java/client/MapleFamily.java b/src/main/java/client/MapleFamily.java index 68d64ef3ea..b0a295f5b4 100644 --- a/src/main/java/client/MapleFamily.java +++ b/src/main/java/client/MapleFamily.java @@ -21,6 +21,7 @@ */ package client; +import net.packet.Packet; import net.server.Server; import net.server.world.World; import tools.DatabaseConnection; @@ -151,16 +152,16 @@ public class MapleFamily { return members.get(cid); } - public void broadcast(byte[] packet) { + public void broadcast(Packet packet) { broadcast(packet, -1); } - public void broadcast(byte[] packet, int ignoreID) { + public void broadcast(Packet packet, int ignoreID) { for(MapleFamilyEntry entry : members.values()) { MapleCharacter chr = entry.getChr(); if(chr != null) { if(chr.getId() == ignoreID) continue; - chr.getClient().announce(packet); + chr.sendPacket(packet); } } } @@ -169,7 +170,7 @@ public class MapleFamily { for(MapleFamilyEntry entry : members.values()) { MapleCharacter chr = entry.getChr(); if(chr != null) { - chr.getClient().announce(PacketCreator.getFamilyInfo(entry)); + chr.sendPacket(PacketCreator.getFamilyInfo(entry)); } } } diff --git a/src/main/java/client/MapleFamilyEntry.java b/src/main/java/client/MapleFamilyEntry.java index 4ab07299c5..f42cf3d540 100644 --- a/src/main/java/client/MapleFamilyEntry.java +++ b/src/main/java/client/MapleFamilyEntry.java @@ -19,6 +19,7 @@ */ package client; +import net.packet.Packet; import net.server.Server; import tools.DatabaseConnection; import tools.FilePrinter; @@ -264,7 +265,7 @@ public class MapleFamilyEntry { this.totalReputation += gain; } MapleCharacter chr = getChr(); - if(chr != null) chr.announce(PacketCreator.sendGainRep(gain, from != null ? from.getName() : "")); + if(chr != null) chr.sendPacket(PacketCreator.sendGainRep(gain, from != null ? from.getName() : "")); } public void giveReputationToSenior(int gain, boolean includeSuperSenior) { @@ -420,15 +421,15 @@ public class MapleFamilyEntry { this.totalJuniors = totalJuniors; } - public void announceToSenior(byte[] packet, boolean includeSuperSenior) { + public void announceToSenior(Packet packet, boolean includeSuperSenior) { MapleFamilyEntry senior = getSenior(); if(senior != null) { MapleCharacter seniorChr = senior.getChr(); - if(seniorChr != null) seniorChr.announce(packet); + if(seniorChr != null) seniorChr.sendPacket(packet); senior = senior.getSenior(); if(includeSuperSenior && senior != null) { seniorChr = senior.getChr(); - if(seniorChr != null) seniorChr.announce(packet); + if(seniorChr != null) seniorChr.sendPacket(packet); } } } @@ -437,11 +438,11 @@ public class MapleFamilyEntry { MapleFamilyEntry senior = getSenior(); if(senior != null) { MapleCharacter seniorChr = senior.getChr(); - if(seniorChr != null) seniorChr.announce(PacketCreator.getFamilyInfo(senior)); + if(seniorChr != null) seniorChr.sendPacket(PacketCreator.getFamilyInfo(senior)); senior = senior.getSenior(); if(includeSuperSenior && senior != null) { seniorChr = senior.getChr(); - if(seniorChr != null) seniorChr.announce(PacketCreator.getFamilyInfo(senior)); + if(seniorChr != null) seniorChr.sendPacket(PacketCreator.getFamilyInfo(senior)); } } } diff --git a/src/main/java/client/MonsterBook.java b/src/main/java/client/MonsterBook.java index 26bca16d1e..d0c7465883 100644 --- a/src/main/java/client/MonsterBook.java +++ b/src/main/java/client/MonsterBook.java @@ -84,10 +84,10 @@ public final class MonsterBook { calculateLevel(); } - c.announce(PacketCreator.addCard(false, cardid, qty + 1)); - c.announce(PacketCreator.showGainCard()); + c.sendPacket(PacketCreator.addCard(false, cardid, qty + 1)); + c.sendPacket(PacketCreator.showGainCard()); } else { - c.announce(PacketCreator.addCard(true, cardid, 5)); + c.sendPacket(PacketCreator.addCard(true, cardid, 5)); } } diff --git a/src/main/java/client/command/commands/gm0/DisposeCommand.java b/src/main/java/client/command/commands/gm0/DisposeCommand.java index aa5bdd6bcd..0593943e0f 100644 --- a/src/main/java/client/command/commands/gm0/DisposeCommand.java +++ b/src/main/java/client/command/commands/gm0/DisposeCommand.java @@ -38,7 +38,7 @@ public class DisposeCommand extends Command { public void execute(MapleClient c, String[] params) { NPCScriptManager.getInstance().dispose(c); QuestScriptManager.getInstance().dispose(c); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); c.removeClickedNPC(); c.getPlayer().message("You've been disposed."); } diff --git a/src/main/java/client/command/commands/gm0/RanksCommand.java b/src/main/java/client/command/commands/gm0/RanksCommand.java index 7da0fdb0b4..8e517fae34 100644 --- a/src/main/java/client/command/commands/gm0/RanksCommand.java +++ b/src/main/java/client/command/commands/gm0/RanksCommand.java @@ -27,7 +27,7 @@ import client.MapleCharacter; import client.MapleClient; import client.command.Command; import net.server.Server; -import tools.PacketCreator; +import net.server.guild.GuildPackets; import tools.Pair; import java.util.List; @@ -42,6 +42,6 @@ public class RanksCommand extends Command { MapleCharacter player = c.getPlayer(); List> worldRanking = Server.getInstance().getWorldPlayerRanking(player.getWorld()); - player.announce(PacketCreator.showPlayerRanks(9010000, worldRanking)); + player.sendPacket(GuildPackets.showPlayerRanks(9010000, worldRanking)); } } diff --git a/src/main/java/client/command/commands/gm3/BanCommand.java b/src/main/java/client/command/commands/gm3/BanCommand.java index 1e74cd8ba8..a6524147e9 100644 --- a/src/main/java/client/command/commands/gm3/BanCommand.java +++ b/src/main/java/client/command/commands/gm3/BanCommand.java @@ -73,15 +73,15 @@ public class BanCommand extends Command { target.ban(reason); target.yellowMessage("You have been banned by #b" + c.getPlayer().getName() + " #k."); target.yellowMessage("Reason: " + reason); - c.announce(PacketCreator.getGMEffect(4, (byte) 0)); + c.sendPacket(PacketCreator.getGMEffect(4, (byte) 0)); final MapleCharacter rip = target; TimerManager.getInstance().schedule(() -> rip.getClient().disconnect(false, false), 5000); //5 Seconds Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.serverNotice(6, "[RIP]: " + ign + " has been banned.")); } else if (MapleCharacter.ban(ign, reason, false)) { - c.announce(PacketCreator.getGMEffect(4, (byte) 0)); + c.sendPacket(PacketCreator.getGMEffect(4, (byte) 0)); Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.serverNotice(6, "[RIP]: " + ign + " has been banned.")); } else { - c.announce(PacketCreator.getGMEffect(6, (byte) 1)); + c.sendPacket(PacketCreator.getGMEffect(6, (byte) 1)); } } } diff --git a/src/main/java/client/command/commands/gm3/MaxEnergyCommand.java b/src/main/java/client/command/commands/gm3/MaxEnergyCommand.java index 540f92f231..f43b066c05 100644 --- a/src/main/java/client/command/commands/gm3/MaxEnergyCommand.java +++ b/src/main/java/client/command/commands/gm3/MaxEnergyCommand.java @@ -37,6 +37,6 @@ public class MaxEnergyCommand extends Command { public void execute(MapleClient c, String[] params) { MapleCharacter player = c.getPlayer(); c.getPlayer().setDojoEnergy(10000); - c.announce(PacketCreator.getEnergy("energy", 10000)); + c.sendPacket(PacketCreator.getEnergy("energy", 10000)); } } diff --git a/src/main/java/client/command/commands/gm3/MusicCommand.java b/src/main/java/client/command/commands/gm3/MusicCommand.java index c3bca566f8..bca318bb10 100644 --- a/src/main/java/client/command/commands/gm3/MusicCommand.java +++ b/src/main/java/client/command/commands/gm3/MusicCommand.java @@ -53,7 +53,7 @@ public class MusicCommand extends Command { sendMsg += "Syntax: #r!music #k\r\n\r\n"; sendMsg += getSongList(); - c.announce(PacketCreator.getNPCTalk(1052015, (byte) 0, sendMsg, "00 00", (byte) 0)); + c.sendPacket(PacketCreator.getNPCTalk(1052015, (byte) 0, sendMsg, "00 00", (byte) 0)); return; } @@ -70,6 +70,6 @@ public class MusicCommand extends Command { sendMsg += "Song not found, please enter a song below.\r\n\r\n"; sendMsg += getSongList(); - c.announce(PacketCreator.getNPCTalk(1052015, (byte) 0, sendMsg, "00 00", (byte) 0)); + c.sendPacket(PacketCreator.getNPCTalk(1052015, (byte) 0, sendMsg, "00 00", (byte) 0)); } } diff --git a/src/main/java/client/command/commands/gm3/TimerAllCommand.java b/src/main/java/client/command/commands/gm3/TimerAllCommand.java index a74bb55ff6..f58898dd43 100644 --- a/src/main/java/client/command/commands/gm3/TimerAllCommand.java +++ b/src/main/java/client/command/commands/gm3/TimerAllCommand.java @@ -43,13 +43,13 @@ public class TimerAllCommand extends Command { if (params[0].equalsIgnoreCase("remove")) { for (MapleCharacter victim : player.getWorldServer().getPlayerStorage().getAllCharacters()) { - victim.announce(PacketCreator.removeClock()); + victim.sendPacket(PacketCreator.removeClock()); } } else { try { int seconds = Integer.parseInt(params[0]); for (MapleCharacter victim : player.getWorldServer().getPlayerStorage().getAllCharacters()) { - victim.announce(PacketCreator.getClock(seconds)); + victim.sendPacket(PacketCreator.getClock(seconds)); } } catch (NumberFormatException e) { player.yellowMessage("Syntax: !timerall |remove"); diff --git a/src/main/java/client/command/commands/gm3/TimerCommand.java b/src/main/java/client/command/commands/gm3/TimerCommand.java index 78ceb32c12..927dc40571 100644 --- a/src/main/java/client/command/commands/gm3/TimerCommand.java +++ b/src/main/java/client/command/commands/gm3/TimerCommand.java @@ -44,10 +44,10 @@ public class TimerCommand extends Command { MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(params[0]); if (victim != null) { if (params[1].equalsIgnoreCase("remove")) { - victim.announce(PacketCreator.removeClock()); + victim.sendPacket(PacketCreator.removeClock()); } else { try { - victim.announce(PacketCreator.getClock(Integer.parseInt(params[1]))); + victim.sendPacket(PacketCreator.getClock(Integer.parseInt(params[1]))); } catch (NumberFormatException e) { player.yellowMessage("Syntax: !timer |remove"); } diff --git a/src/main/java/client/command/commands/gm3/TimerMapCommand.java b/src/main/java/client/command/commands/gm3/TimerMapCommand.java index ce65f9a9d8..6b10b51092 100644 --- a/src/main/java/client/command/commands/gm3/TimerMapCommand.java +++ b/src/main/java/client/command/commands/gm3/TimerMapCommand.java @@ -43,13 +43,13 @@ public class TimerMapCommand extends Command { if (params[0].equalsIgnoreCase("remove")) { for (MapleCharacter victim : player.getMap().getCharacters()) { - victim.announce(PacketCreator.removeClock()); + victim.sendPacket(PacketCreator.removeClock()); } } else { try { int seconds = Integer.parseInt(params[0]); for (MapleCharacter victim : player.getMap().getCharacters()) { - victim.announce(PacketCreator.getClock(seconds)); + victim.sendPacket(PacketCreator.getClock(seconds)); } } catch (NumberFormatException e) { player.yellowMessage("Syntax: !timermap |remove"); diff --git a/src/main/java/client/command/commands/gm6/WarpWorldCommand.java b/src/main/java/client/command/commands/gm6/WarpWorldCommand.java index 3c159eb419..6f65a11c08 100644 --- a/src/main/java/client/command/commands/gm6/WarpWorldCommand.java +++ b/src/main/java/client/command/commands/gm6/WarpWorldCommand.java @@ -55,7 +55,7 @@ public class WarpWorldCommand extends Command { player.setSessionTransitionState(); player.setWorld(worldb); player.saveCharToDB();//To set the new world :O (true because else 2 player instances are created, one in both worlds) - c.announce(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); + c.sendPacket(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); } catch (UnknownHostException | NumberFormatException ex) { ex.printStackTrace(); player.message("Unexpected error when changing worlds, are you sure the world you are trying to warp to has the same amount of channels?"); diff --git a/src/main/java/client/creator/CharacterFactory.java b/src/main/java/client/creator/CharacterFactory.java index 34dffa08e2..d4d74e1768 100644 --- a/src/main/java/client/creator/CharacterFactory.java +++ b/src/main/java/client/creator/CharacterFactory.java @@ -90,7 +90,7 @@ public abstract class CharacterFactory { if (!newchar.insertNewChar(recipe)) { return -2; } - c.announce(PacketCreator.addNewCharEntry(newchar)); + c.sendPacket(PacketCreator.addNewCharEntry(newchar)); Server.getInstance().createCharacterEntry(newchar); Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.sendYellowTip("[New Char]: " + c.getAccountName() + " has created a new character with IGN " + name)); diff --git a/src/main/java/client/inventory/Equip.java b/src/main/java/client/inventory/Equip.java index a2e234c6ad..c6797a62f6 100644 --- a/src/main/java/client/inventory/Equip.java +++ b/src/main/java/client/inventory/Equip.java @@ -532,8 +532,8 @@ public class Equip extends Item { showLevelupMessage(showStr, c); // thanks to Polaris dev team ! c.getPlayer().dropMessage(6, lvupStr); - c.announce(PacketCreator.showEquipmentLevelUp()); - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PacketCreator.showForeignEffect(c.getPlayer().getId(), 15)); + c.sendPacket(PacketCreator.showEquipmentLevelUp()); + c.getPlayer().getMap().broadcastPacket(c.getPlayer(), PacketCreator.showForeignEffect(c.getPlayer().getId(), 15)); c.getPlayer().forceUpdateItem(this); } diff --git a/src/main/java/client/inventory/MaplePet.java b/src/main/java/client/inventory/MaplePet.java index 3d0d6abbf1..0703424a44 100644 --- a/src/main/java/client/inventory/MaplePet.java +++ b/src/main/java/client/inventory/MaplePet.java @@ -202,7 +202,7 @@ public class MaplePet extends Item { closeness = newCloseness; while(newCloseness >= ExpTable.getClosenessNeededForLevel(level)) { level += 1; - owner.getClient().announce(PacketCreator.showOwnPetLevelUp(slot)); + owner.sendPacket(PacketCreator.showOwnPetLevelUp(slot)); owner.getMap().broadcastMessage(PacketCreator.showPetLevelUp(owner, slot)); } } diff --git a/src/main/java/client/inventory/manipulator/MapleInventoryManipulator.java b/src/main/java/client/inventory/manipulator/MapleInventoryManipulator.java index 62fc2e4b16..1199cdfd2a 100644 --- a/src/main/java/client/inventory/manipulator/MapleInventoryManipulator.java +++ b/src/main/java/client/inventory/manipulator/MapleInventoryManipulator.java @@ -92,7 +92,7 @@ public class MapleInventoryManipulator { quantity -= (newQ - oldQ); eItem.setQuantity(newQ); eItem.setExpiration(expiration); - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, eItem)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, eItem)))); } } else { break; @@ -109,17 +109,17 @@ public class MapleInventoryManipulator { nItem.setExpiration(expiration); short newSlot = inv.addItem(nItem); if (newSlot == -1) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return false; } if (owner != null) { nItem.setOwner(owner); } - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); if(sandboxItem) chr.setHasSandboxItem(); } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } } @@ -129,11 +129,11 @@ public class MapleInventoryManipulator { nItem.setExpiration(expiration); short newSlot = inv.addItem(nItem); if (newSlot == -1) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return false; } - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); if(MapleInventoryManipulator.isSandboxItem(nItem)) chr.setHasSandboxItem(); } } else if (quantity == 1) { @@ -145,11 +145,11 @@ public class MapleInventoryManipulator { } short newSlot = inv.addItem(nEquip); if (newSlot == -1) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return false; } - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nEquip)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nEquip)))); if(MapleInventoryManipulator.isSandboxItem(nEquip)) chr.setHasSandboxItem(); } else { throw new RuntimeException("Trying to create equip with non-one quantity"); @@ -182,8 +182,8 @@ public class MapleInventoryManipulator { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); int itemid = item.getItemId(); if (ii.isPickupRestricted(itemid) && chr.haveItemWithId(itemid, true)) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.showItemUnavailable()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.showItemUnavailable()); return false; } short quantity = item.getQuantity(); @@ -203,7 +203,7 @@ public class MapleInventoryManipulator { quantity -= (newQ - oldQ); eItem.setQuantity(newQ); item.setPosition(eItem.getPosition()); - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, eItem)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, eItem)))); } } else { break; @@ -219,14 +219,14 @@ public class MapleInventoryManipulator { nItem.setFlag(item.getFlag()); short newSlot = inv.addItem(nItem); if (newSlot == -1) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); item.setQuantity((short) (quantity + newQ)); return false; } nItem.setPosition(newSlot); item.setPosition(newSlot); - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); if (MapleInventoryManipulator.isSandboxItem(nItem)) chr.setHasSandboxItem(); } } else { @@ -236,34 +236,34 @@ public class MapleInventoryManipulator { short newSlot = inv.addItem(nItem); if (newSlot == -1) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return false; } nItem.setPosition(newSlot); item.setPosition(newSlot); - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); if (MapleInventoryManipulator.isSandboxItem(nItem)) chr.setHasSandboxItem(); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } else if (quantity == 1) { short newSlot = inv.addItem(item); if (newSlot == -1) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return false; } item.setPosition(newSlot); - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, item)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, item)))); if (MapleInventoryManipulator.isSandboxItem(item)) chr.setHasSandboxItem(); } else { FilePrinter.printError(FilePrinter.ITEM, "Tried to pickup Equip id " + itemid + " containing more than 1 quantity --> " + quantity); - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.showItemUnavailable()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.showItemUnavailable()); return false; } if (show) { - c.announce(PacketCreator.getShowItemGain(itemid, item.getQuantity())); + c.sendPacket(PacketCreator.getShowItemGain(itemid, item.getQuantity())); } return true; } @@ -429,9 +429,9 @@ public class MapleInventoryManipulator { private static void announceModifyInventory(MapleClient c, Item item, boolean fromDrop, boolean allowZero) { if (item.getQuantity() == 0 && !allowZero) { - c.announce(PacketCreator.modifyInventory(fromDrop, Collections.singletonList(new ModifyInventory(3, item)))); + c.sendPacket(PacketCreator.modifyInventory(fromDrop, Collections.singletonList(new ModifyInventory(3, item)))); } else { - c.announce(PacketCreator.modifyInventory(fromDrop, Collections.singletonList(new ModifyInventory(1, item)))); + c.sendPacket(PacketCreator.modifyInventory(fromDrop, Collections.singletonList(new ModifyInventory(1, item)))); } } @@ -498,7 +498,7 @@ public class MapleInventoryManipulator { } else { mods.add(new ModifyInventory(2, source, src)); } - c.announce(PacketCreator.modifyInventory(true, mods)); + c.sendPacket(PacketCreator.modifyInventory(true, mods)); } public static void equip(MapleClient c, short src, short dst) { @@ -510,7 +510,7 @@ public class MapleInventoryManipulator { Equip source = (Equip) eqpInv.getItem(src); if (source == null || !ii.canWearEquipment(chr, source, dst)) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } else if ((((source.getItemId() >= 1902000 && source.getItemId() <= 1902002) || source.getItemId() == 1912000) && chr.isCygnus()) || ((source.getItemId() >= 1902005 && source.getItemId() <= 1902007) || source.getItemId() == 1912005) && !chr.isCygnus()) {// Adventurer taming equipment return; @@ -527,8 +527,8 @@ public class MapleInventoryManipulator { Item top = eqpdInv.getItem((short) -5); if (top != null && ItemConstants.isOverall(top.getItemId())) { if (eqpInv.isFull()) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return; } unequip(c, (byte) -5, eqpInv.getNextFreeSlot()); @@ -537,8 +537,8 @@ public class MapleInventoryManipulator { final Item bottom = eqpdInv.getItem((short) -6); if (bottom != null && ItemConstants.isOverall(source.getItemId())) { if (eqpInv.isFull()) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return; } unequip(c, (byte) -6, eqpInv.getNextFreeSlot()); @@ -547,8 +547,8 @@ public class MapleInventoryManipulator { Item weapon = eqpdInv.getItem((short) -11); if (weapon != null && ii.isTwoHanded(weapon.getItemId())) { if (eqpInv.isFull()) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return; } unequip(c, (byte) -11, eqpInv.getNextFreeSlot()); @@ -557,8 +557,8 @@ public class MapleInventoryManipulator { Item shield = eqpdInv.getItem((short) -10); if (shield != null && ii.isTwoHanded(source.getItemId())) { if (eqpInv.isFull()) { - c.announce(PacketCreator.getInventoryFull()); - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); return; } unequip(c, (byte) -10, eqpInv.getNextFreeSlot()); @@ -614,7 +614,7 @@ public class MapleInventoryManipulator { } mods.add(new ModifyInventory(2, source, src)); - c.announce(PacketCreator.modifyInventory(true, mods)); + c.sendPacket(PacketCreator.modifyInventory(true, mods)); chr.equipChanged(); } @@ -632,7 +632,7 @@ public class MapleInventoryManipulator { return; } if (target != null && src <= 0) { - c.announce(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); return; } @@ -656,7 +656,7 @@ public class MapleInventoryManipulator { target.setPosition(src); eqpdInv.addItemFromDB(target); } - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(2, source, src)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(2, source, src)))); chr.equipChanged(); } @@ -712,7 +712,7 @@ public class MapleInventoryManipulator { Item target = source.copy(); target.setQuantity(quantity); source.setQuantity((short) (source.getQuantity() - quantity)); - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, source)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, source)))); if (ItemConstants.isNewYearCardEtc(itemId)) { if(itemId == 4300000) { @@ -742,7 +742,7 @@ public class MapleInventoryManipulator { inv.removeSlot(src); } - c.announce(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(3, source)))); + c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(3, source)))); if (src < 0) { chr.equipChanged(); } else if (ItemConstants.isNewYearCardEtc(itemId)) { diff --git a/src/main/java/client/keybind/MapleQuickslotBinding.java b/src/main/java/client/keybind/MapleQuickslotBinding.java index f592774abb..71e9189c18 100644 --- a/src/main/java/client/keybind/MapleQuickslotBinding.java +++ b/src/main/java/client/keybind/MapleQuickslotBinding.java @@ -1,6 +1,6 @@ package client.keybind; -import tools.data.output.MaplePacketLittleEndianWriter; +import net.packet.OutPacket; import java.util.Arrays; @@ -31,25 +31,22 @@ public class MapleQuickslotBinding this.m_aQuickslotKeyMapped = aKeys.clone(); } - public void Encode(MaplePacketLittleEndianWriter oPacket) + public void encode(OutPacket p) { // Quickslots are default. // The client will skip them and call CQuickslotKeyMappedMan::DefaultQuickslotKeyMap. - if(Arrays.equals(this.m_aQuickslotKeyMapped, DEFAULT_QUICKSLOTS)) - { - oPacket.writeBool(false); - + if (Arrays.equals(this.m_aQuickslotKeyMapped, DEFAULT_QUICKSLOTS)) { + p.writeBool(false); return; } - oPacket.writeBool(true); + p.writeBool(true); - for(byte nKey : this.m_aQuickslotKeyMapped) - { + for(byte nKey : this.m_aQuickslotKeyMapped) { // For some reason Nexon sends these as integers, similar to CFuncKeyMappedMan. // However there's no evidence any key can be above 0xFF anyhow. // Regardless, we need to encode an integer to avoid an error 38 crash; as CFuncKeyMapped::m_aQuickslotKeyMapped is int[8]. - oPacket.writeInt(nKey); + p.writeInt(nKey); } } diff --git a/src/main/java/client/newyear/NewYearCardRecord.java b/src/main/java/client/newyear/NewYearCardRecord.java index 38b51e23ba..c521148a7c 100644 --- a/src/main/java/client/newyear/NewYearCardRecord.java +++ b/src/main/java/client/newyear/NewYearCardRecord.java @@ -257,7 +257,7 @@ public class NewYearCardRecord { MapleCharacter target = server.getWorld(world).getPlayerStorage().getCharacterById(receiverId); if(target != null && target.isLoggedinWorld()) { - target.announce(PacketCreator.onNewYearCardRes(target, NewYearCardRecord.this, 0xC, 0)); + target.sendPacket(PacketCreator.onNewYearCardRes(target, NewYearCardRecord.this, 0xC, 0)); } }, 1000 * 60 * 60); //1 Hour } diff --git a/src/main/java/client/processor/action/BuybackProcessor.java b/src/main/java/client/processor/action/BuybackProcessor.java index 80439c143d..b96e10f4c0 100644 --- a/src/main/java/client/processor/action/BuybackProcessor.java +++ b/src/main/java/client/processor/action/BuybackProcessor.java @@ -77,7 +77,7 @@ public class BuybackProcessor { map.broadcastMessage(PacketCreator.playSound("Buyback/" + jobString)); map.broadcastMessage(PacketCreator.earnTitleMessage(chr.getName() + " just bought back into the game!")); - chr.announce(PacketCreator.showBuybackEffect()); + chr.sendPacket(PacketCreator.showBuybackEffect()); map.broadcastMessage(chr, PacketCreator.showForeignBuybackEffect(chr.getId()), false); } } diff --git a/src/main/java/client/processor/action/MakerProcessor.java b/src/main/java/client/processor/action/MakerProcessor.java index b8df84f107..ccbfd1d232 100644 --- a/src/main/java/client/processor/action/MakerProcessor.java +++ b/src/main/java/client/processor/action/MakerProcessor.java @@ -65,8 +65,8 @@ public class MakerProcessor { int fromLeftover = toCreate; toCreate = ii.getMakerCrystalFromLeftover(toCreate); if(toCreate == -1) { - c.announce(PacketCreator.serverNotice(1, ii.getName(fromLeftover) + " is unavailable for Monster Crystal conversion.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, ii.getName(fromLeftover) + " is unavailable for Monster Crystal conversion.")); + c.sendPacket(PacketCreator.makerEnableActions()); return; } @@ -83,13 +83,13 @@ public class MakerProcessor { if(p != null) { recipe = MakerItemFactory.generateDisassemblyCrystalEntry(toDisassemble, p.getLeft(), p.getRight()); } else { - c.announce(PacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal disassembly.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal disassembly.")); + c.sendPacket(PacketCreator.makerEnableActions()); return; } } else { - c.announce(PacketCreator.serverNotice(1, "An unknown error occurred when trying to apply that item for disassembly.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "An unknown error occurred when trying to apply that item for disassembly.")); + c.sendPacket(PacketCreator.makerEnableActions()); return; } } else { @@ -136,8 +136,8 @@ public class MakerProcessor { if(!reagentids.isEmpty()) { if(!removeOddMakerReagents(toCreate, reagentids)) { - c.announce(PacketCreator.serverNotice(1, "You can only use WATK and MATK Strengthening Gems on weapon items.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "You can only use WATK and MATK Strengthening Gems on weapon items.")); + c.sendPacket(PacketCreator.makerEnableActions()); return; } } @@ -151,33 +151,33 @@ public class MakerProcessor { switch(createStatus) { case -1:// non-available for Maker itemid has been tried to forge FilePrinter.printError(FilePrinter.EXPLOITS, "Player " + c.getPlayer().getName() + " tried to craft itemid " + toCreate + " using the Maker skill."); - c.announce(PacketCreator.serverNotice(1, "The requested item could not be crafted on this operation.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "The requested item could not be crafted on this operation.")); + c.sendPacket(PacketCreator.makerEnableActions()); break; case 1: // no items - c.announce(PacketCreator.serverNotice(1, "You don't have all required items in your inventory to make " + ii.getName(toCreate) + ".")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "You don't have all required items in your inventory to make " + ii.getName(toCreate) + ".")); + c.sendPacket(PacketCreator.makerEnableActions()); break; case 2: // no meso - c.announce(PacketCreator.serverNotice(1, "You don't have enough mesos (" + GameConstants.numberWithCommas(recipe.getCost()) + ") to complete this operation.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "You don't have enough mesos (" + GameConstants.numberWithCommas(recipe.getCost()) + ") to complete this operation.")); + c.sendPacket(PacketCreator.makerEnableActions()); break; case 3: // no req level - c.announce(PacketCreator.serverNotice(1, "You don't have enough level to complete this operation.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "You don't have enough level to complete this operation.")); + c.sendPacket(PacketCreator.makerEnableActions()); break; case 4: // no req skill level - c.announce(PacketCreator.serverNotice(1, "You don't have enough Maker level to complete this operation.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "You don't have enough Maker level to complete this operation.")); + c.sendPacket(PacketCreator.makerEnableActions()); break; case 5: // inventory full - c.announce(PacketCreator.serverNotice(1, "Your inventory is full.")); - c.announce(PacketCreator.makerEnableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "Your inventory is full.")); + c.sendPacket(PacketCreator.makerEnableActions()); break; default: @@ -214,14 +214,14 @@ public class MakerProcessor { // thanks inhyuk for noticing missing MAKER_RESULT packets if (type == 3) { - c.announce(PacketCreator.makerResultCrystal(recipe.getGainItems().get(0).getLeft(), recipe.getReqItems().get(0).getLeft())); + c.sendPacket(PacketCreator.makerResultCrystal(recipe.getGainItems().get(0).getLeft(), recipe.getReqItems().get(0).getLeft())); } else if (type == 4) { - c.announce(PacketCreator.makerResultDesynth(recipe.getReqItems().get(0).getLeft(), recipe.getCost(), recipe.getGainItems())); + c.sendPacket(PacketCreator.makerResultDesynth(recipe.getReqItems().get(0).getLeft(), recipe.getCost(), recipe.getGainItems())); } else { - c.announce(PacketCreator.makerResult(makerSucceeded, recipe.getGainItems().get(0).getLeft(), recipe.getGainItems().get(0).getRight(), recipe.getCost(), recipe.getReqItems(), stimulantid, new LinkedList<>(reagentids.keySet()))); + c.sendPacket(PacketCreator.makerResult(makerSucceeded, recipe.getGainItems().get(0).getLeft(), recipe.getGainItems().get(0).getRight(), recipe.getCost(), recipe.getReqItems(), stimulantid, new LinkedList<>(reagentids.keySet()))); } - c.announce(PacketCreator.showMakerEffect(makerSucceeded)); + c.sendPacket(PacketCreator.showMakerEffect(makerSucceeded)); c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PacketCreator.showForeignMakerEffect(c.getPlayer().getId(), makerSucceeded), false); if(toCreate == 4260003 && type == 3 && c.getPlayer().getQuestStatus(6033) == 1) { diff --git a/src/main/java/client/processor/action/PetAutopotProcessor.java b/src/main/java/client/processor/action/PetAutopotProcessor.java index d7c69eb52a..45114854bb 100644 --- a/src/main/java/client/processor/action/PetAutopotProcessor.java +++ b/src/main/java/client/processor/action/PetAutopotProcessor.java @@ -83,7 +83,7 @@ public class PetAutopotProcessor { MapleClient c = this.c; MapleCharacter chr = c.getPlayer(); if (!chr.isAlive()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -102,7 +102,7 @@ public class PetAutopotProcessor { toUse = useInv.getItem(slot); if (toUse != null) { if (toUse.getItemId() != itemId) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -111,7 +111,7 @@ public class PetAutopotProcessor { // from now on, toUse becomes the "cursor" for the current pot being used if (toUse.getQuantity() <= 0) { if (!cursorOnNextAvailablePot(chr)) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } @@ -179,7 +179,7 @@ public class PetAutopotProcessor { } } - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/client/processor/action/SpawnPetProcessor.java b/src/main/java/client/processor/action/SpawnPetProcessor.java index b82a21c3f9..29cc716a31 100644 --- a/src/main/java/client/processor/action/SpawnPetProcessor.java +++ b/src/main/java/client/processor/action/SpawnPetProcessor.java @@ -52,7 +52,7 @@ public class SpawnPetProcessor { { if (chr.haveItem(petid + 1)) { chr.dropMessage(5, "You can't hatch your " + (petid == 5000028 ? "Dragon egg" : "Robo egg") + " if you already have a Baby " + (petid == 5000028 ? "Dragon." : "Robo.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } else { int evolveid = MapleDataTool.getInt("info/evol1", dataRoot.getData("Pet/" + petid + ".img")); @@ -64,7 +64,7 @@ public class SpawnPetProcessor { MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false); MapleInventoryManipulator.addById(c, evolveid, (short) 1, null, petId, expiration); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } @@ -86,8 +86,8 @@ public class SpawnPetProcessor { pet.saveToDb(); chr.addPet(pet); chr.getMap().broadcastMessage(c.getPlayer(), PacketCreator.showPet(c.getPlayer(), pet, false, false), true); - c.announce(PacketCreator.petStatUpdate(c.getPlayer())); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.petStatUpdate(c.getPlayer())); + c.sendPacket(PacketCreator.enableActions()); chr.commitExcludedItems(); chr.getClient().getWorldServer().registerPetHunger(chr, chr.getPetIndex(pet)); diff --git a/src/main/java/client/processor/npc/DueyProcessor.java b/src/main/java/client/processor/npc/DueyProcessor.java index c0289a9c9e..8e955a7d22 100644 --- a/src/main/java/client/processor/npc/DueyProcessor.java +++ b/src/main/java/client/processor/npc/DueyProcessor.java @@ -117,7 +117,7 @@ public class DueyProcessor { ps2.setInt(1, player.getId()); ps2.executeUpdate(); - c.announce(PacketCreator.sendDueyParcelReceived(rs.getString("SenderName"), rs.getInt("Type") == 1)); + c.sendPacket(PacketCreator.sendDueyParcelReceived(rs.getString("SenderName"), rs.getInt("Type") == 1)); } } } @@ -305,21 +305,21 @@ public class DueyProcessor { int recipientAccId = accIdCid.getLeft(); if (recipientAccId != -1) { if (recipientAccId == c.getAccID()) { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SAMEACC_ERROR.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SAMEACC_ERROR.getCode())); return; } } else { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); return; } } else { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NOT_ENOUGH_MESOS.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NOT_ENOUGH_MESOS.getCode())); return; } int recipientCid = accIdCid.getRight(); if (recipientCid == -1) { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); return; } @@ -329,18 +329,18 @@ public class DueyProcessor { int packageId = createPackage(sendMesos, sendMessage, c.getPlayer().getName(), recipientCid, quick); if (packageId == -1) { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_ENABLE_ACTIONS.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_ENABLE_ACTIONS.getCode())); return; } c.getPlayer().gainMeso((int) -finalcost, false); int res = addPackageItemFromInventory(packageId, c, invTypeId, itemPos, amount); if (res == 0) { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SUCCESSFULLY_SENT.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SUCCESSFULLY_SENT.getCode())); } else if (res > 0) { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_ENABLE_ACTIONS.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_ENABLE_ACTIONS.getCode())); } else { - c.announce(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_INCORRECT_REQUEST.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_INCORRECT_REQUEST.getCode())); } MapleClient rClient = null; @@ -368,7 +368,7 @@ public class DueyProcessor { if (c.tryacquireClient()) { try { removePackageFromDB(packageid); - c.announce(PacketCreator.removeItemFromDuey(playerRemove, packageid)); + c.sendPacket(PacketCreator.removeItemFromDuey(playerRemove, packageid)); } finally { c.releaseClient(); } @@ -392,29 +392,29 @@ public class DueyProcessor { } if (dp == null) { - c.announce(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to receive package from duey with id " + packageId); return; } if (dp.isDeliveringTime()) { - c.announce(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); return; } Item dpItem = dp.getItem(); if (dpItem != null) { if (!c.getPlayer().canHoldMeso(dp.getMesos())) { - c.announce(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); return; } if (!MapleInventoryManipulator.checkSpace(c, dpItem.getItemId(), dpItem.getQuantity(), dpItem.getOwner())) { int itemid = dpItem.getItemId(); if (MapleItemInformationProvider.getInstance().isPickupRestricted(itemid) && c.getPlayer().getInventory(ItemConstants.getInventoryType(itemid)).findById(itemid) != null) { - c.announce(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_RECEIVER_WITH_UNIQUE.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_RECEIVER_WITH_UNIQUE.getCode())); } else { - c.announce(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_NO_FREE_SLOTS.getCode())); + c.sendPacket(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_NO_FREE_SLOTS.getCode())); } return; @@ -440,15 +440,15 @@ public class DueyProcessor { try { long timeNow = System.currentTimeMillis(); if (timeNow - c.getPlayer().getNpcCooldown() < YamlConfig.config.server.BLOCK_NPC_RACE_CONDT) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } c.getPlayer().setNpcCooldown(timeNow); if (quickDelivery) { - c.announce(PacketCreator.sendDuey(0x1A, null)); + c.sendPacket(PacketCreator.sendDuey(0x1A, null)); } else { - c.announce(PacketCreator.sendDuey(0x8, loadPackages(c.getPlayer()))); + c.sendPacket(PacketCreator.sendDuey(0x8, loadPackages(c.getPlayer()))); } } finally { c.releaseClient(); diff --git a/src/main/java/client/processor/npc/FredrickProcessor.java b/src/main/java/client/processor/npc/FredrickProcessor.java index 43bd649a7b..d15b4bf63d 100644 --- a/src/main/java/client/processor/npc/FredrickProcessor.java +++ b/src/main/java/client/processor/npc/FredrickProcessor.java @@ -275,7 +275,7 @@ public class FredrickProcessor { byte response = canRetrieveFromFredrick(chr, items); if (response != 0) { - chr.announce(PacketCreator.fredrickMessage(response)); + chr.sendPacket(PacketCreator.fredrickMessage(response)); return; } @@ -294,7 +294,7 @@ public class FredrickProcessor { FilePrinter.print(FilePrinter.FREDRICK + chr.getName() + ".txt", chr.getName() + " gained " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")"); } - chr.announce(PacketCreator.fredrickMessage((byte) 0x1E)); + chr.sendPacket(PacketCreator.fredrickMessage((byte) 0x1E)); removeFredrickLog(chr.getId()); } else { chr.message("An unknown error has occured."); diff --git a/src/main/java/client/processor/npc/StorageProcessor.java b/src/main/java/client/processor/npc/StorageProcessor.java index 55ea3433b2..37dde5f809 100644 --- a/src/main/java/client/processor/npc/StorageProcessor.java +++ b/src/main/java/client/processor/npc/StorageProcessor.java @@ -52,7 +52,7 @@ public class StorageProcessor { if (chr.getLevel() < 15){ chr.dropMessage(1, "You may only use the storage once you have reached level 15."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -71,13 +71,13 @@ public class StorageProcessor { Item item = storage.getItem(slot); if (item != null) { if (ii.isPickupRestricted(item.getItemId()) && chr.haveItemWithId(item.getItemId(), true)) { - c.announce(PacketCreator.getStorageError((byte) 0x0C)); + c.sendPacket(PacketCreator.getStorageError((byte) 0x0C)); return; } int takeoutFee = storage.getTakeOutFee(); if (chr.getMeso() < takeoutFee) { - c.announce(PacketCreator.getStorageError((byte) 0x0B)); + c.sendPacket(PacketCreator.getStorageError((byte) 0x0B)); return; } else { chr.gainMeso(-takeoutFee, false); @@ -95,11 +95,11 @@ public class StorageProcessor { storage.sendTakenOut(c, item.getInventoryType()); } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } else { - c.announce(PacketCreator.getStorageError((byte) 0x0A)); + c.sendPacket(PacketCreator.getStorageError((byte) 0x0A)); } } } else if (mode == 5) { // store @@ -115,17 +115,17 @@ public class StorageProcessor { return; } if (quantity < 1) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (storage.isFull()) { - c.announce(PacketCreator.getStorageError((byte) 0x11)); + c.sendPacket(PacketCreator.getStorageError((byte) 0x11)); return; } int storeFee = storage.getStoreFee(); if (chr.getMeso() < storeFee) { - c.announce(PacketCreator.getStorageError((byte) 0x0B)); + c.sendPacket(PacketCreator.getStorageError((byte) 0x0B)); } else { Item item; @@ -134,7 +134,7 @@ public class StorageProcessor { item = inv.getItem(slot); if (item != null && item.getItemId() == itemId && (item.getQuantity() >= quantity || ItemConstants.isRechargeable(itemId))) { if (ItemConstants.isWeddingRing(itemId) || ItemConstants.isWeddingToken(itemId)) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -144,7 +144,7 @@ public class StorageProcessor { MapleInventoryManipulator.removeFromSlot(c, invType, slot, quantity, false); } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -168,7 +168,7 @@ public class StorageProcessor { } } else if (mode == 6) { // arrange items if(YamlConfig.config.server.USE_STORAGE_ITEM_SORT) storage.arrangeItems(c); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (mode == 7) { // meso int meso = slea.readInt(); int storageMesos = storage.getMeso(); @@ -177,13 +177,13 @@ public class StorageProcessor { if (meso < 0 && (storageMesos - meso) < 0) { meso = Integer.MIN_VALUE + storageMesos; if (meso < playerMesos) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } else if (meso > 0 && (playerMesos + meso) < 0) { meso = Integer.MAX_VALUE - playerMesos; if (meso > storageMesos) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } @@ -193,7 +193,7 @@ public class StorageProcessor { FilePrinter.print(FilePrinter.STORAGE + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + (meso > 0 ? " took out " : " stored ") + Math.abs(meso) + " mesos"); storage.sendMeso(c); } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } else if (mode == 8) {// close... unless the player decides to enter cash shop! diff --git a/src/main/java/client/processor/stat/AssignAPProcessor.java b/src/main/java/client/processor/stat/AssignAPProcessor.java index dcc9a77057..0b127535ef 100644 --- a/src/main/java/client/processor/stat/AssignAPProcessor.java +++ b/src/main/java/client/processor/stat/AssignAPProcessor.java @@ -329,11 +329,11 @@ public class AssignAPProcessor { } chr.assignStrDexIntLuk(statGain[0], statGain[1], statGain[3], statGain[2]); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); //---------------------------------------------------------------------------------------- - c.announce(PacketCreator.serverNotice(1, "Better AP applications detected:\r\nSTR: +" + statGain[0] + "\r\nDEX: +" + statGain[1] + "\r\nINT: +" + statGain[3] + "\r\nLUK: +" + statGain[2])); + c.sendPacket(PacketCreator.serverNotice(1, "Better AP applications detected:\r\nSTR: +" + statGain[0] + "\r\nDEX: +" + statGain[1] + "\r\nINT: +" + statGain[3] + "\r\nLUK: +" + statGain[2])); } else { if(slea.available() < 16) { AutobanFactory.PACKET_EDIT.alert(chr, "Didn't send full packet for Auto Assign."); @@ -353,7 +353,7 @@ public class AssignAPProcessor { } chr.assignStrDexIntLuk(statGain[0], statGain[1], statGain[3], statGain[2]); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } finally { c.unlockClient(); @@ -426,48 +426,48 @@ public class AssignAPProcessor { case 64: // str if (player.getStr() < 5) { player.message("You don't have the minimum STR required to swap."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } if (!player.assignStr(-1)) { player.message("Couldn't execute AP reset operation."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } break; case 128: // dex if (player.getDex() < 5) { player.message("You don't have the minimum DEX required to swap."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } if (!player.assignDex(-1)) { player.message("Couldn't execute AP reset operation."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } break; case 256: // int if (player.getInt() < 5) { player.message("You don't have the minimum INT required to swap."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } if (!player.assignInt(-1)) { player.message("Couldn't execute AP reset operation."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } break; case 512: // luk if (player.getLuk() < 5) { player.message("You don't have the minimum LUK required to swap."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } if (!player.assignLuk(-1)) { player.message("Couldn't execute AP reset operation."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } break; @@ -475,14 +475,14 @@ public class AssignAPProcessor { if(YamlConfig.config.server.USE_ENFORCE_HPMP_SWAP) { if (APTo != 8192) { player.message("You can only swap HP ability points to MP."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } } if (player.getHpMpApUsed() < 1) { player.message("You don't have enough HPMP stat points to spend on AP Reset."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -490,7 +490,7 @@ public class AssignAPProcessor { int level_ = player.getLevel(); if (hp < level_ * 14 + 148) { player.message("You don't have the minimum HP pool required to swap."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -506,14 +506,14 @@ public class AssignAPProcessor { if(YamlConfig.config.server.USE_ENFORCE_HPMP_SWAP) { if (APTo != 2048) { player.message("You can only swap MP ability points to HP."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } } if (player.getHpMpApUsed() < 1) { player.message("You don't have enough HPMP stat points to spend on AP Reset."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -534,7 +534,7 @@ public class AssignAPProcessor { if (!canWash) { player.message("You don't have the minimum MP pool required to swap."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -546,7 +546,7 @@ public class AssignAPProcessor { } break; default: - c.announce(PacketCreator.updatePlayerStats(PacketCreator.EMPTY_STATUPDATE, true, player)); + c.sendPacket(PacketCreator.updatePlayerStats(PacketCreator.EMPTY_STATUPDATE, true, player)); return false; } @@ -571,47 +571,47 @@ public class AssignAPProcessor { case 64: if (!chr.assignStr(1)) { chr.message("Couldn't execute AP assign operation."); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); return false; } break; case 128: // Dex if (!chr.assignDex(1)) { chr.message("Couldn't execute AP assign operation."); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); return false; } break; case 256: // Int if (!chr.assignInt(1)) { chr.message("Couldn't execute AP assign operation."); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); return false; } break; case 512: // Luk if (!chr.assignLuk(1)) { chr.message("Couldn't execute AP assign operation."); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); return false; } break; case 2048: if (!chr.assignHP(calcHpChange(chr, usedAPReset), 1)) { chr.message("Couldn't execute AP assign operation."); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); return false; } break; case 8192: if (!chr.assignMP(calcMpChange(chr, usedAPReset), 1)) { chr.message("Couldn't execute AP assign operation."); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); return false; } break; default: - chr.announce(PacketCreator.updatePlayerStats(PacketCreator.EMPTY_STATUPDATE, true, chr)); + chr.sendPacket(PacketCreator.updatePlayerStats(PacketCreator.EMPTY_STATUPDATE, true, chr)); return false; } return true; diff --git a/src/main/java/client/processor/stat/AssignSPProcessor.java b/src/main/java/client/processor/stat/AssignSPProcessor.java index 349b5ef244..191cf3aedf 100644 --- a/src/main/java/client/processor/stat/AssignSPProcessor.java +++ b/src/main/java/client/processor/stat/AssignSPProcessor.java @@ -41,7 +41,7 @@ public class AssignSPProcessor { public static boolean canSPAssign(MapleClient c, int skillid) { if (skillid == Aran.HIDDEN_FULL_DOUBLE || skillid == Aran.HIDDEN_FULL_TRIPLE || skillid == Aran.HIDDEN_OVER_DOUBLE || skillid == Aran.HIDDEN_OVER_TRIPLE) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -82,7 +82,7 @@ public class AssignSPProcessor { if (!isBeginnerSkill) { player.gainSp(-1, GameConstants.getSkillBook(skillid/10000), false); } else { - player.announce(PacketCreator.enableActions()); + player.sendPacket(PacketCreator.enableActions()); } if (skill.getId() == Aran.FULL_SWING) { player.changeSkillLevel(skill, (byte) (curLevel + 1), player.getMasterLevel(skill), player.getSkillExpiration(skill)); diff --git a/src/main/java/net/netty/ServerChannelInitializer.java b/src/main/java/net/netty/ServerChannelInitializer.java index e18f78e754..eb1cf96875 100644 --- a/src/main/java/net/netty/ServerChannelInitializer.java +++ b/src/main/java/net/netty/ServerChannelInitializer.java @@ -54,7 +54,7 @@ public abstract class ServerChannelInitializer extends ChannelInitializer= YamlConfig.config.server.FAMILY_MAX_GENERATIONS) { - inviter.announce(PacketCreator.sendFamilyMessage(76, 0)); - chr.announce(PacketCreator.sendFamilyMessage(76, 0)); + inviter.sendPacket(PacketCreator.sendFamilyMessage(76, 0)); + chr.sendPacket(PacketCreator.sendFamilyMessage(76, 0)); return; } MapleFamily newFamily = new MapleFamily(-1, c.getWorld()); @@ -113,14 +113,14 @@ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler { } } c.getPlayer().getFamily().broadcast(PacketCreator.sendFamilyJoinResponse(true, c.getPlayer().getName()), c.getPlayer().getId()); - c.announce(PacketCreator.getSeniorMessage(inviter.getName())); - c.announce(PacketCreator.getFamilyInfo(chr.getFamilyEntry())); + c.sendPacket(PacketCreator.getSeniorMessage(inviter.getName())); + c.sendPacket(PacketCreator.getFamilyInfo(chr.getFamilyEntry())); chr.getFamilyEntry().updateSeniorFamilyInfo(true); } else { - inviter.announce(PacketCreator.sendFamilyJoinResponse(false, c.getPlayer().getName())); + inviter.sendPacket(PacketCreator.sendFamilyJoinResponse(false, c.getPlayer().getName())); } } - c.announce(PacketCreator.sendFamilyMessage(0, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(0, 0)); } private static void insertNewFamilyRecord(int characterID, int familyID, int seniorID, boolean updateChar) { diff --git a/src/main/java/net/server/channel/handlers/AdminChatHandler.java b/src/main/java/net/server/channel/handlers/AdminChatHandler.java index 0ebfa825d6..16e4cd01a5 100644 --- a/src/main/java/net/server/channel/handlers/AdminChatHandler.java +++ b/src/main/java/net/server/channel/handlers/AdminChatHandler.java @@ -3,6 +3,7 @@ package net.server.channel.handlers; import client.MapleClient; import config.YamlConfig; import net.AbstractMaplePacketHandler; +import net.packet.Packet; import tools.LogHelper; import tools.PacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -21,7 +22,7 @@ public class AdminChatHandler extends AbstractMaplePacketHandler { byte mode = slea.readByte(); //not saving slides... String message = slea.readMapleAsciiString(); - byte[] packet = PacketCreator.serverNotice(slea.readByte(), message);//maybe I should make a check for the slea.readByte()... but I just hope gm's don't fuck things up :) + Packet packet = PacketCreator.serverNotice(slea.readByte(), message);//maybe I should make a check for the slea.readByte()... but I just hope gm's don't fuck things up :) switch (mode) { case 0:// /alertall, /noticeall, /slideall c.getWorldServer().broadcastPacket(packet); diff --git a/src/main/java/net/server/channel/handlers/AdminCommandHandler.java b/src/main/java/net/server/channel/handlers/AdminCommandHandler.java index 625c2662b1..ef48f94718 100644 --- a/src/main/java/net/server/channel/handlers/AdminCommandHandler.java +++ b/src/main/java/net/server/channel/handlers/AdminCommandHandler.java @@ -58,7 +58,7 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler { c.getPlayer().getMap().spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(toSpawnChild[0]), c.getPlayer().getPosition()); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); break; case 0x01: { // /d (inv) byte type = slea.readByte(); @@ -94,11 +94,11 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler { target.block(type, duration, description); target.sendPolice(duration, reason, 6000); } - c.announce(PacketCreator.getGMEffect(4, (byte) 0)); + c.sendPacket(PacketCreator.getGMEffect(4, (byte) 0)); } else if (MapleCharacter.ban(victim, reason, false)) { - c.announce(PacketCreator.getGMEffect(4, (byte) 0)); + c.sendPacket(PacketCreator.getGMEffect(4, (byte) 0)); } else { - c.announce(PacketCreator.getGMEffect(6, (byte) 1)); + c.sendPacket(PacketCreator.getGMEffect(6, (byte) 1)); } break; case 0x10: // /h, information added by vana -- ... hide ofcourse @@ -160,10 +160,10 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler { String message = slea.readMapleAsciiString(); target = c.getChannelServer().getPlayerStorage().getCharacterByName(victim); if (target != null) { - target.getClient().announce(PacketCreator.serverNotice(1, message)); - c.announce(PacketCreator.getGMEffect(0x1E, (byte) 1)); + target.getClient().sendPacket(PacketCreator.serverNotice(1, message)); + c.sendPacket(PacketCreator.getGMEffect(0x1E, (byte) 1)); } else { - c.announce(PacketCreator.getGMEffect(0x1E, (byte) 0)); + c.sendPacket(PacketCreator.getGMEffect(0x1E, (byte) 0)); } break; case 0x24:// /Artifact Ranking diff --git a/src/main/java/net/server/channel/handlers/AllianceOperationHandler.java b/src/main/java/net/server/channel/handlers/AllianceOperationHandler.java index 8bfac3ff80..01a491ae0d 100644 --- a/src/main/java/net/server/channel/handlers/AllianceOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/AllianceOperationHandler.java @@ -25,7 +25,10 @@ import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; import net.opcodes.SendOpcode; +import net.packet.OutPacket; +import net.packet.Packet; import net.server.Server; +import net.server.guild.GuildPackets; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; @@ -45,7 +48,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); if (chr.getGuild() == null) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -56,18 +59,18 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { byte b = slea.readByte(); if (alliance == null) { if (b != 4) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } else { if (b == 4) { chr.dropMessage(5, "Your guild is already registered on a guild alliance."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (chr.getMGC().getAllianceRank() > 2 || !alliance.getGuilds().contains(chr.getGuildId())) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } @@ -131,9 +134,9 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { chr.saveGuildStatus(); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.addGuildToAlliance(alliance, guildid, c), -1, -1); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.updateAllianceInfo(alliance, c.getWorld()), -1, -1); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.addGuildToAlliance(alliance, guildid, c), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.updateAllianceInfo(alliance, c.getWorld()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); guild.dropMessage("Your guild has joined the [" + alliance.getName() + "] union."); break; @@ -145,12 +148,12 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { return; } - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.removeGuildFromAlliance(alliance, guildid, c.getWorld()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.removeGuildFromAlliance(alliance, guildid, c.getWorld()), -1, -1); Server.getInstance().removeGuildFromAlliance(alliance.getId(), guildid); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, c.getWorld()), -1, -1); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); - Server.getInstance().guildMessage(guildid, PacketCreator.disbandAlliance(allianceid)); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, c.getWorld()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); + Server.getInstance().guildMessage(guildid, GuildPackets.disbandAlliance(allianceid)); alliance.dropMessage("[" + Server.getInstance().getGuild(guildid).getName() + "] guild has been expelled from the union."); break; @@ -175,7 +178,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { ranks[i] = slea.readMapleAsciiString(); } Server.getInstance().setAllianceRanks(alliance.getId(), ranks); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.changeAllianceRankTitle(alliance.getId(), ranks), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.changeAllianceRankTitle(alliance.getId(), ranks), -1, -1); break; case 0x09: { int int1 = slea.readInt(); @@ -190,7 +193,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { case 0x0A: String notice = slea.readMapleAsciiString(); Server.getInstance().setAllianceNotice(alliance.getId(), notice); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), notice), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), notice), -1, -1); alliance.dropMessage(5, "* Alliance Notice : " + notice); break; @@ -210,7 +213,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { newLeader.getMGC().setAllianceRank(1); newLeader.saveGuildStatus(); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, newLeader.getWorld()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, newLeader.getWorld()), -1, -1); alliance.dropMessage("'" + newLeader.getName() + "' has been appointed as the new head of this Alliance."); } @@ -221,17 +224,16 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { chr.getMGC().setAllianceRank(newRank); chr.saveGuildStatus(); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, chr.getWorld()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, chr.getWorld()), -1, -1); alliance.dropMessage("'" + chr.getName() + "' has been reassigned to '" + alliance.getRankTitle(newRank) + "' in this Alliance."); } - private static byte[] sendShowInfo(int allianceid, int playerid) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x02); - mplew.writeInt(allianceid); - mplew.writeInt(playerid); - return mplew.getPacket(); + private static Packet sendShowInfo(int allianceid, int playerid) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x02); + p.writeInt(allianceid); + p.writeInt(playerid); + return p; } private static byte[] sendInvitation(int allianceid, int playerid, final String guildname) { diff --git a/src/main/java/net/server/channel/handlers/BBSOperationHandler.java b/src/main/java/net/server/channel/handlers/BBSOperationHandler.java index d6e857cd31..318ecc1ec1 100644 --- a/src/main/java/net/server/channel/handlers/BBSOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/BBSOperationHandler.java @@ -24,8 +24,8 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; +import net.server.guild.GuildPackets; import tools.DatabaseConnection; -import tools.PacketCreator; import tools.data.input.SeekableLittleEndianAccessor; import java.sql.Connection; @@ -103,7 +103,7 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { ps.setInt(1, c.getPlayer().getGuildId()); try (ResultSet rs = ps.executeQuery()) { - c.announce(PacketCreator.BBSThreadList(rs, start)); + c.sendPacket(GuildPackets.BBSThreadList(rs, start)); } } catch (SQLException se) { se.printStackTrace(); @@ -317,7 +317,7 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { ps2.setInt(1, !bIsThreadIdLocal ? threadid : threadRS.getInt("threadid")); repliesRS = ps2.executeQuery(); } - client.announce(PacketCreator.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS)); + client.sendPacket(GuildPackets.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS)); repliesRS.close(); } if (ps2 != null) { diff --git a/src/main/java/net/server/channel/handlers/BuddylistModifyHandler.java b/src/main/java/net/server/channel/handlers/BuddylistModifyHandler.java index 37a1c5b33d..47b9c06389 100644 --- a/src/main/java/net/server/channel/handlers/BuddylistModifyHandler.java +++ b/src/main/java/net/server/channel/handlers/BuddylistModifyHandler.java @@ -54,7 +54,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler { private void nextPendingRequest(MapleClient c) { CharacterNameAndId pendingBuddyRequest = c.getPlayer().getBuddylist().pollPendingRequest(); if (pendingBuddyRequest != null) { - c.announce(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); + c.sendPacket(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); } } @@ -88,9 +88,9 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler { } BuddylistEntry ble = buddylist.get(addName); if (ble != null && !ble.isVisible() && group.equals(ble.getGroup())) { - c.announce(PacketCreator.serverNotice(1, "You already have \"" + ble.getName() + "\" on your Buddylist")); + c.sendPacket(PacketCreator.serverNotice(1, "You already have \"" + ble.getName() + "\" on your Buddylist")); } else if (buddylist.isFull() && ble == null) { - c.announce(PacketCreator.serverNotice(1, "Your buddylist is already full")); + c.sendPacket(PacketCreator.serverNotice(1, "Your buddylist is already full")); } else if (ble == null) { try { World world = c.getWorldServer(); @@ -135,7 +135,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler { } } if (buddyAddResult == BuddyAddResult.BUDDYLIST_FULL) { - c.announce(PacketCreator.serverNotice(1, "\"" + addName + "\"'s Buddylist is full")); + c.sendPacket(PacketCreator.serverNotice(1, "\"" + addName + "\"'s Buddylist is full")); } else { int displayChannel; displayChannel = -1; @@ -152,17 +152,17 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler { } } buddylist.put(new BuddylistEntry(charWithId.getName(), group, otherCid, displayChannel, true)); - c.announce(PacketCreator.updateBuddylist(buddylist.getBuddies())); + c.sendPacket(PacketCreator.updateBuddylist(buddylist.getBuddies())); } } else { - c.announce(PacketCreator.serverNotice(1, "A character called \"" + addName + "\" does not exist")); + c.sendPacket(PacketCreator.serverNotice(1, "A character called \"" + addName + "\" does not exist")); } } catch (SQLException e) { e.printStackTrace(); } } else { ble.changeGroup(group); - c.announce(PacketCreator.updateBuddylist(buddylist.getBuddies())); + c.sendPacket(PacketCreator.updateBuddylist(buddylist.getBuddies())); } } else if (mode == 2) { // accept buddy int otherCid = slea.readInt(); @@ -187,7 +187,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler { } if (otherName != null) { buddylist.put(new BuddylistEntry(otherName, "Default Group", otherCid, channel, true)); - c.announce(PacketCreator.updateBuddylist(buddylist.getBuddies())); + c.sendPacket(PacketCreator.updateBuddylist(buddylist.getBuddies())); notifyRemoteChannel(c, channel, otherCid, ADDED); } } catch (SQLException e) { diff --git a/src/main/java/net/server/channel/handlers/CancelDebuffHandler.java b/src/main/java/net/server/channel/handlers/CancelDebuffHandler.java index d7add270f3..1d3927645d 100644 --- a/src/main/java/net/server/channel/handlers/CancelDebuffHandler.java +++ b/src/main/java/net/server/channel/handlers/CancelDebuffHandler.java @@ -35,7 +35,7 @@ public final class CancelDebuffHandler extends AbstractMaplePacketHandler {//TIP List disease_ = new ArrayList(); disease_.add(disease); diseases_.add(disease); - c.announce(PacketCreator.cancelDebuff(disease_)); + c.sendPacket(PacketCreator.cancelDebuff(disease_)); c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PacketCreator.cancelForeignDebuff(c.getPlayer().getId(), disease_), false); } for (MapleDisease disease : diseases_) { diff --git a/src/main/java/net/server/channel/handlers/CashOperationHandler.java b/src/main/java/net/server/channel/handlers/CashOperationHandler.java index 50445dc656..727a20eaf7 100644 --- a/src/main/java/net/server/channel/handlers/CashOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/CashOperationHandler.java @@ -55,7 +55,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { CashShop cs = chr.getCashShop(); if (!cs.isOpened()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -89,7 +89,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { Item item = cItem.toItem(); cs.gainCash(useNX, cItem, chr.getWorld()); // thanks Rohenn for noticing cash operations after item acquisition cs.addToInventory(item); - c.announce(PacketCreator.showBoughtCashItem(item, c.getAccID())); + c.sendPacket(PacketCreator.showBoughtCashItem(item, c.getAccID())); } else { // Package cs.gainCash(useNX, cItem, chr.getWorld()); @@ -97,9 +97,9 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { for (Item item : cashPackage) { cs.addToInventory(item); } - c.announce(PacketCreator.showBoughtCashPackage(cashPackage, c.getAccID())); + c.sendPacket(PacketCreator.showBoughtCashPackage(cashPackage, c.getAccID())); } - c.announce(PacketCreator.showCash(chr)); + c.sendPacket(PacketCreator.showCash(chr)); } else if (action == 0x04) {//TODO check for gender int birthday = slea.readInt(); CashItem cItem = CashItemFactory.getItem(slea.readInt()); @@ -110,19 +110,19 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { return; } if (!checkBirthday(c, birthday)) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC4)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4)); return; } else if (recipient == null) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xA9)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xA9)); return; } else if (recipient.get("accountid").equals(String.valueOf(c.getAccID()))) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xA8)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xA8)); return; } cs.gainCash(4, cItem, chr.getWorld()); cs.gift(Integer.parseInt(recipient.get("id")), chr.getName(), message, cItem.getSN()); - c.announce(PacketCreator.showGiftSucceed(recipient.get("name"), cItem)); - c.announce(PacketCreator.showCash(chr)); + c.sendPacket(PacketCreator.showGiftSucceed(recipient.get("name"), cItem)); + c.sendPacket(PacketCreator.showCash(chr)); try { chr.sendNote(recipient.get("name"), chr.getName() + " has sent you a gift! Go check out the Cash Shop.", (byte) 0); //fame or not } catch (SQLException ex) { @@ -139,7 +139,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { cs.addToWishList(sn); } } - c.announce(PacketCreator.showWishList(chr, true)); + c.sendPacket(PacketCreator.showWishList(chr, true)); } else if (action == 0x06) { // Increase Inventory Slots slea.skip(1); int cash = slea.readInt(); @@ -157,8 +157,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } cs.gainCash(cash, -4000); if (chr.gainSlots(type, qty, false)) { - c.announce(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type))); - c.announce(PacketCreator.showCash(chr)); + c.sendPacket(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type))); + c.sendPacket(PacketCreator.showCash(chr)); } else { FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots of type " + type + " for player " + MapleCharacter.makeMapleReadable(chr.getName())); } @@ -176,8 +176,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } cs.gainCash(cash, cItem, chr.getWorld()); if (chr.gainSlots(type, qty, false)) { - c.announce(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type))); - c.announce(PacketCreator.showCash(chr)); + c.sendPacket(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type))); + c.sendPacket(PacketCreator.showCash(chr)); } else { FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots of type " + type + " for player " + MapleCharacter.makeMapleReadable(chr.getName())); } @@ -201,8 +201,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " bought " + qty + " slots to their account storage."); chr.setUsedStorage(); - c.announce(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots())); - c.announce(PacketCreator.showCash(chr)); + c.sendPacket(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots())); + c.sendPacket(PacketCreator.showCash(chr)); } else { FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots to " + MapleCharacter.makeMapleReadable(chr.getName()) + "'s account."); } @@ -223,8 +223,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " bought " + qty + " slots to their account storage."); chr.setUsedStorage(); - c.announce(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots())); - c.announce(PacketCreator.showCash(chr)); + c.sendPacket(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots())); + c.sendPacket(PacketCreator.showCash(chr)); } else { FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots to " + MapleCharacter.makeMapleReadable(chr.getName()) + "'s account."); } @@ -245,8 +245,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } cs.gainCash(cash, cItem, chr.getWorld()); if (c.gainCharacterSlot()) { - c.announce(PacketCreator.showBoughtCharacterSlot(c.getCharacterSlots())); - c.announce(PacketCreator.showCash(chr)); + c.sendPacket(PacketCreator.showBoughtCharacterSlot(c.getCharacterSlots())); + c.sendPacket(PacketCreator.showCash(chr)); } else { FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add a character slot to " + MapleCharacter.makeMapleReadable(chr.getName()) + "'s account."); c.enableCSActions(); @@ -260,7 +260,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } if (chr.getInventory(item.getInventoryType()).addItem(item) != -1) { cs.removeFromInventory(item); - c.announce(PacketCreator.takeFromCashInventory(item)); + c.sendPacket(PacketCreator.takeFromCashInventory(item)); if(item instanceof Equip) { Equip equip = (Equip) item; @@ -286,17 +286,17 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { c.enableCSActions(); return; } else if (c.getPlayer().getPetIndex(item.getPetId()) > -1) { - chr.getClient().announce(PacketCreator.serverNotice(1, "You cannot put the pet you currently equip into the Cash Shop inventory.")); + chr.getClient().sendPacket(PacketCreator.serverNotice(1, "You cannot put the pet you currently equip into the Cash Shop inventory.")); c.enableCSActions(); return; } else if (ItemConstants.isWeddingRing(item.getItemId()) || ItemConstants.isWeddingToken(item.getItemId())) { - chr.getClient().announce(PacketCreator.serverNotice(1, "You cannot put relationship items into the Cash Shop inventory.")); + chr.getClient().sendPacket(PacketCreator.serverNotice(1, "You cannot put relationship items into the Cash Shop inventory.")); c.enableCSActions(); return; } cs.addToInventory(item); mi.removeSlot(item.getPosition()); - c.announce(PacketCreator.putIntoCashInventory(item, c.getAccID())); + c.sendPacket(PacketCreator.putIntoCashInventory(item, c.getAccID())); } else if (action == 0x1D) { //crush ring (action 28) int birthday = slea.readInt(); if (checkBirthday(c, birthday)) { @@ -307,7 +307,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { CashItem itemRing = CashItemFactory.getItem(SN); MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(recipientName); if (partner == null) { - chr.getClient().announce(PacketCreator.serverNotice(1, "The partner you specified cannot be found.\r\nPlease make sure your partner is online and in the same channel.")); + chr.sendPacket(PacketCreator.serverNotice(1, "The partner you specified cannot be found.\r\nPlease make sure your partner is online and in the same channel.")); } else { /* if (partner.getGender() == chr.getGender()) { @@ -321,7 +321,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { Pair rings = MapleRing.createRing(itemRing.getItemId(), chr, partner); eqp.setRingId(rings.getLeft()); cs.addToInventory(eqp); - c.announce(PacketCreator.showBoughtCashItem(eqp, c.getAccID())); + c.sendPacket(PacketCreator.showBoughtCashItem(eqp, c.getAccID())); cs.gainCash(toCharge, itemRing, chr.getWorld()); cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), rings.getRight()); chr.addCrushRing(MapleRing.loadFromDb(rings.getLeft())); @@ -334,27 +334,27 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } } } else { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC4)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4)); } - c.announce(PacketCreator.showCash(c.getPlayer())); + c.sendPacket(PacketCreator.showCash(c.getPlayer())); } else if (action == 0x20) { int serialNumber = slea.readInt(); // thanks GabrielSin for detecting a potential exploit with 1 meso cash items. if (serialNumber / 10000000 != 8) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC0)); return; } CashItem item = CashItemFactory.getItem(serialNumber); if (item == null || !item.isOnSale()) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC0)); return; } int itemId = item.getItemId(); int itemPrice = item.getPrice(); if (itemPrice <= 0) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC0)); return; } @@ -362,10 +362,10 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { if (chr.canHold(itemId)) { chr.gainMeso(-itemPrice, false); MapleInventoryManipulator.addById(c, itemId, (short) 1, "", -1); - c.announce(PacketCreator.showBoughtQuestItem(itemId)); + c.sendPacket(PacketCreator.showBoughtQuestItem(itemId)); } } - c.announce(PacketCreator.showCash(c.getPlayer())); + c.sendPacket(PacketCreator.showCash(c.getPlayer())); } else if (action == 0x23) { //Friendship :3 int birthday = slea.readInt(); if (checkBirthday(c, birthday)) { @@ -379,7 +379,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { slea.readByte(); MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(sentTo); if (partner == null) { - c.announce(PacketCreator.showCashShopMessage((byte)0xBE)); + 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) { @@ -387,7 +387,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { Pair rings = MapleRing.createRing(itemRing.getItemId(), chr, partner); eqp.setRingId(rings.getLeft()); cs.addToInventory(eqp); - c.announce(PacketCreator.showBoughtCashRing(eqp, partner.getName(), c.getAccID())); + c.sendPacket(PacketCreator.showBoughtCashRing(eqp, partner.getName(), c.getAccID())); cs.gainCash(payment, -itemRing.getPrice()); cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), rings.getRight()); chr.addFriendshipRing(MapleRing.loadFromDb(rings.getLeft())); @@ -400,14 +400,14 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } } } else { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC4)); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4)); } - c.announce(PacketCreator.showCash(c.getPlayer())); + c.sendPacket(PacketCreator.showCash(c.getPlayer())); } else if (action == 0x2E) { //name change CashItem cItem = CashItemFactory.getItem(slea.readInt()); if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) { - c.announce(PacketCreator.showCashShopMessage((byte)0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0)); c.enableCSActions(); return; } @@ -415,28 +415,28 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { slea.readMapleAsciiString(); //old name String newName = slea.readMapleAsciiString(); if(!MapleCharacter.canCreateChar(newName) || chr.getLevel() < 10) { //(longest ban duration isn't tracked currently) - c.announce(PacketCreator.showCashShopMessage((byte)0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0)); c.enableCSActions(); return; } else if(c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30*24*60*60*1000) > Calendar.getInstance().getTimeInMillis()) { - c.announce(PacketCreator.showCashShopMessage((byte)0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0)); c.enableCSActions(); return; } if(chr.registerNameChange(newName)) { //success Item item = cItem.toItem(); - c.announce(PacketCreator.showNameChangeSuccess(item, c.getAccID())); + c.sendPacket(PacketCreator.showNameChangeSuccess(item, c.getAccID())); cs.gainCash(4, cItem, chr.getWorld()); cs.addToInventory(item); } else { - c.announce(PacketCreator.showCashShopMessage((byte)0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0)); } } c.enableCSActions(); } else if(action == 0x31) { //world transfer CashItem cItem = CashItemFactory.getItem(slea.readInt()); if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) { - c.announce(PacketCreator.showCashShopMessage((byte)0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0)); c.enableCSActions(); return; } @@ -445,21 +445,21 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { int worldTransferError = chr.checkWorldTransferEligibility(); if(worldTransferError != 0 || newWorldSelection >= Server.getInstance().getWorldsSize() || Server.getInstance().getWorldsSize() <= 1) { - c.announce(PacketCreator.showCashShopMessage((byte)0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0)); return; } else if(newWorldSelection == c.getWorld()) { - c.announce(PacketCreator.showCashShopMessage((byte)0xDC)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0xDC)); return; } else if(c.getAvailableCharacterWorldSlots(newWorldSelection) < 1 || Server.getInstance().getAccountWorldCharacterCount(c.getAccID(), newWorldSelection) >= 3) { - c.announce(PacketCreator.showCashShopMessage((byte)0xDF)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0xDF)); return; } else if(chr.registerWorldTransfer(newWorldSelection)) { Item item = cItem.toItem(); - c.announce(PacketCreator.showWorldTransferSuccess(item, c.getAccID())); + c.sendPacket(PacketCreator.showWorldTransferSuccess(item, c.getAccID())); cs.gainCash(4, cItem, chr.getWorld()); cs.addToInventory(item); } else { - c.announce(PacketCreator.showCashShopMessage((byte)0)); + c.sendPacket(PacketCreator.showCashShopMessage((byte)0)); } } c.enableCSActions(); @@ -470,7 +470,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { c.releaseClient(); } } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/CashShopSurpriseHandler.java b/src/main/java/net/server/channel/handlers/CashShopSurpriseHandler.java index f7374def7f..b8b87625e6 100644 --- a/src/main/java/net/server/channel/handlers/CashShopSurpriseHandler.java +++ b/src/main/java/net/server/channel/handlers/CashShopSurpriseHandler.java @@ -41,9 +41,9 @@ public class CashShopSurpriseHandler extends AbstractMaplePacketHandler { if(cssResult != null) { Item cssItem = cssResult.getLeft(), cssBox = cssResult.getRight(); - c.announce(PacketCreator.onCashGachaponOpenSuccess(c.getAccID(), cssBox.getSN(), cssBox.getQuantity(), cssItem, cssItem.getItemId(), cssItem.getQuantity(), true)); + c.sendPacket(PacketCreator.onCashGachaponOpenSuccess(c.getAccID(), cssBox.getSN(), cssBox.getQuantity(), cssItem, cssItem.getItemId(), cssItem.getQuantity(), true)); } else { - c.announce(PacketCreator.onCashItemGachaponOpenFailed()); + c.sendPacket(PacketCreator.onCashItemGachaponOpenFailed()); } } } diff --git a/src/main/java/net/server/channel/handlers/ChangeMapHandler.java b/src/main/java/net/server/channel/handlers/ChangeMapHandler.java index b10bd7b371..071b568090 100644 --- a/src/main/java/net/server/channel/handlers/ChangeMapHandler.java +++ b/src/main/java/net/server/channel/handlers/ChangeMapHandler.java @@ -49,7 +49,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler { FilePrinter.printError(FilePrinter.PORTAL_STUCK + chr.getName() + ".txt", "Player " + chr.getName() + " got stuck when changing maps. Timestamp: " + Calendar.getInstance().getTime().toString() + " Last visited mapids: " + chr.getLastVisitedMapids()); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (chr.getTrade() != null) { @@ -65,7 +65,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler { chr.setSessionTransitionState(); try { - c.announce(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); + c.sendPacket(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); } catch (UnknownHostException ex) { ex.printStackTrace(); } @@ -95,7 +95,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler { // thanks lucasziron (lziron) for showing revivePlayer() triggering by Wheel MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, 5510000, 1, true, false); - chr.announce(PacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false))); + chr.sendPacket(PacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false))); chr.updateHp(50); chr.changeMap(map, map.findClosestPlayerSpawnpoint(chr.getPosition())); @@ -121,8 +121,8 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler { } } else if (divi == 20100) { if (targetid == 104000000) { - c.announce(PacketCreator.lockUI(false)); - c.announce(PacketCreator.disableUI(false)); + c.sendPacket(PacketCreator.lockUI(false)); + c.sendPacket(PacketCreator.disableUI(false)); warp = true; } } else if (divi == 9130401) { // Only allow warp if player is already in Intro map, or else = hack @@ -151,8 +151,8 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler { } if (portal != null && !portal.getPortalStatus()) { - c.announce(PacketCreator.blockedMessage(1)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.blockedMessage(1)); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -164,13 +164,13 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler { if (portal != null) { if (portal.getPosition().distanceSq(chr.getPosition()) > 400000) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } portal.enterPortal(c); } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/net/server/channel/handlers/ChangeMapSpecialHandler.java b/src/main/java/net/server/channel/handlers/ChangeMapSpecialHandler.java index 796609abb9..0709f6170b 100644 --- a/src/main/java/net/server/channel/handlers/ChangeMapSpecialHandler.java +++ b/src/main/java/net/server/channel/handlers/ChangeMapSpecialHandler.java @@ -37,11 +37,11 @@ public final class ChangeMapSpecialHandler extends AbstractMaplePacketHandler { slea.readShort(); MaplePortal portal = c.getPlayer().getMap().getPortal(startwp); if (portal == null || c.getPlayer().portalDelay() > currentServerTime() || c.getPlayer().getBlockedPortals().contains(portal.getScriptName())) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (c.getPlayer().isChangingMaps() || c.getPlayer().isBanned()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (c.getPlayer().getTrade() != null) { diff --git a/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java b/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java index ad1bc1ad8a..822dd221b6 100644 --- a/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java +++ b/src/main/java/net/server/channel/handlers/CharInfoRequestHandler.java @@ -42,7 +42,7 @@ public final class CharInfoRequestHandler extends AbstractMaplePacketHandler { if(c.getPlayer().getId() != player.getId()) { player.exportExcludedItems(c); } - c.announce(PacketCreator.charInfo(player)); + c.sendPacket(PacketCreator.charInfo(player)); } } } diff --git a/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java index da71d9b818..10e8da6a68 100644 --- a/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -59,7 +59,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { return; if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK); - c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); + c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } chr.getMap().broadcastMessage(chr, PacketCreator.closeRangeAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.speed, attack.direction, attack.display), false, true); @@ -104,7 +104,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.COMBO, neworbcount)); chr.setBuffedValue(MapleBuffStat.COMBO, neworbcount); duration -= (int) (currentServerTime() - chr.getBuffedStarttime(MapleBuffStat.COMBO)); - c.announce(PacketCreator.giveBuff(oid, duration, stat)); + c.sendPacket(PacketCreator.giveBuff(oid, duration, stat)); chr.getMap().broadcastMessage(chr, PacketCreator.giveForeignBuff(chr.getId(), stat), false); } } @@ -146,8 +146,8 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { } chr.setDojoEnergy(0); - c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); - c.announce(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset.")); + c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); + c.sendPacket(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset.")); } else if (attack.skill > 0) { Skill skill = SkillFactory.getSkill(attack.skill); MapleStatEffect effect_ = skill.getEffect(chr.getSkillLevel(skill)); @@ -155,7 +155,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { if (chr.skillIsCooling(attack.skill)) { return; } else { - c.announce(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); + c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000); } } diff --git a/src/main/java/net/server/channel/handlers/CouponCodeHandler.java b/src/main/java/net/server/channel/handlers/CouponCodeHandler.java index 7fcae0f642..6920594961 100644 --- a/src/main/java/net/server/channel/handlers/CouponCodeHandler.java +++ b/src/main/java/net/server/channel/handlers/CouponCodeHandler.java @@ -188,7 +188,7 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { Pair>>> codeRes = getNXCodeResult(c.getPlayer(), code.toUpperCase()); int type = codeRes.getLeft(); if (type < 0) { - c.announce(PacketCreator.showCashShopMessage((byte) parseCouponResult(type))); + c.sendPacket(PacketCreator.showCashShopMessage((byte) parseCouponResult(type))); } else { List cashItems = new LinkedList<>(); List> items = new LinkedList<>(); @@ -260,9 +260,9 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { } } if (nxCredit != 0 || nxPrepaid != 0) { //coupon packet can only show maple points (afaik) - c.announce(PacketCreator.showBoughtQuestItem(0)); + c.sendPacket(PacketCreator.showBoughtQuestItem(0)); } else { - c.announce(PacketCreator.showCouponRedeemedItems(c.getAccID(), maplePoints, mesos, cashItems, items)); + c.sendPacket(PacketCreator.showCouponRedeemedItems(c.getAccID(), maplePoints, mesos, cashItems, items)); } c.enableCSActions(); } diff --git a/src/main/java/net/server/channel/handlers/DenyPartyRequestHandler.java b/src/main/java/net/server/channel/handlers/DenyPartyRequestHandler.java index 6648c0e5a7..d873996092 100644 --- a/src/main/java/net/server/channel/handlers/DenyPartyRequestHandler.java +++ b/src/main/java/net/server/channel/handlers/DenyPartyRequestHandler.java @@ -43,7 +43,7 @@ public final class DenyPartyRequestHandler extends AbstractMaplePacketHandler { if (MapleInviteCoordinator.answerInvite(InviteType.PARTY, chr.getId(), cfrom.getPartyId(), false).result == InviteResult.DENIED) { chr.updatePartySearchAvailability(chr.getParty() == null); - cfrom.getClient().announce(PacketCreator.partyStatusMessage(23, chr.getName())); + cfrom.sendPacket(PacketCreator.partyStatusMessage(23, chr.getName())); } } } diff --git a/src/main/java/net/server/channel/handlers/DoorHandler.java b/src/main/java/net/server/channel/handlers/DoorHandler.java index 497629861c..72b7139f31 100644 --- a/src/main/java/net/server/channel/handlers/DoorHandler.java +++ b/src/main/java/net/server/channel/handlers/DoorHandler.java @@ -41,7 +41,7 @@ public final class DoorHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); if (chr.isChangingMaps() || chr.isBanned()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -55,7 +55,7 @@ public final class DoorHandler extends AbstractMaplePacketHandler { } } - c.announce(PacketCreator.blockedMessage(6)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.blockedMessage(6)); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/DueyHandler.java b/src/main/java/net/server/channel/handlers/DueyHandler.java index c6956c00c1..3b28f14b62 100644 --- a/src/main/java/net/server/channel/handlers/DueyHandler.java +++ b/src/main/java/net/server/channel/handlers/DueyHandler.java @@ -33,7 +33,7 @@ public final class DueyHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { if (!YamlConfig.config.server.USE_DUEY){ - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } diff --git a/src/main/java/net/server/channel/handlers/EnterCashShopHandler.java b/src/main/java/net/server/channel/handlers/EnterCashShopHandler.java index b9b61f8b50..d66e2d3b8c 100644 --- a/src/main/java/net/server/channel/handlers/EnterCashShopHandler.java +++ b/src/main/java/net/server/channel/handlers/EnterCashShopHandler.java @@ -40,19 +40,19 @@ public class EnterCashShopHandler extends AbstractMaplePacketHandler { MapleCharacter mc = c.getPlayer(); if (mc.cannotEnterCashShop()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if(mc.getEventInstance() != null) { - c.announce(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event.")); + c.sendPacket(PacketCreator.enableActions()); return; } if(MapleMiniDungeonInfo.isDungeonMap(mc.getMapId())) { - c.announce(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon.")); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -79,11 +79,11 @@ public class EnterCashShopHandler extends AbstractMaplePacketHandler { mc.forfeitExpirableQuests(); mc.cancelQuestExpirationTask(); - c.announce(PacketCreator.openCashShop(c, false)); - c.announce(PacketCreator.showCashInventory(c)); - c.announce(PacketCreator.showGifts(mc.getCashShop().loadGifts())); - c.announce(PacketCreator.showWishList(mc, false)); - c.announce(PacketCreator.showCash(mc)); + c.sendPacket(PacketCreator.openCashShop(c, false)); + c.sendPacket(PacketCreator.showCashInventory(c)); + c.sendPacket(PacketCreator.showGifts(mc.getCashShop().loadGifts())); + c.sendPacket(PacketCreator.showWishList(mc, false)); + c.sendPacket(PacketCreator.showCash(mc)); c.getChannelServer().removePlayer(mc); mc.getMap().removePlayer(mc); diff --git a/src/main/java/net/server/channel/handlers/EnterMTSHandler.java b/src/main/java/net/server/channel/handlers/EnterMTSHandler.java index 2d5919fc70..e766473a5d 100644 --- a/src/main/java/net/server/channel/handlers/EnterMTSHandler.java +++ b/src/main/java/net/server/channel/handlers/EnterMTSHandler.java @@ -51,38 +51,38 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { if(!chr.isAlive() && YamlConfig.config.server.USE_BUYBACK_SYSTEM) { BuybackProcessor.processBuyback(c); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else { if (!YamlConfig.config.server.USE_MTS) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if(chr.getEventInstance() != null) { - c.announce(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event.")); + c.sendPacket(PacketCreator.enableActions()); return; } if(MapleMiniDungeonInfo.isDungeonMap(chr.getMapId())) { - c.announce(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon.")); + c.sendPacket(PacketCreator.enableActions()); return; } if (FieldLimit.CANNOTMIGRATE.check(chr.getMap().getFieldLimit())) { chr.dropMessage(1, "You can't do it here in this map."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (!chr.isAlive()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (chr.getLevel() < 10) { - c.announce(PacketCreator.blockedMessage2(5)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.blockedMessage2(5)); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -110,14 +110,14 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { c.getChannelServer().removePlayer(chr); chr.getMap().removePlayer(c.getPlayer()); try { - c.announce(PacketCreator.openCashShop(c, true)); + c.sendPacket(PacketCreator.openCashShop(c, true)); } catch (Exception ex) { ex.printStackTrace(); } chr.getCashShop().open(true);// xD c.enableCSActions(); - c.announce(PacketCreator.MTSWantedListingOver(0, 0)); - c.announce(PacketCreator.showMTSCash(c.getPlayer())); + c.sendPacket(PacketCreator.MTSWantedListingOver(0, 0)); + c.sendPacket(PacketCreator.showMTSCash(c.getPlayer())); List items = new ArrayList<>(); int pages = 0; try (Connection con = DatabaseConnection.getConnection()) { @@ -171,9 +171,9 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { } catch (SQLException e) { e.printStackTrace(); } - c.announce(PacketCreator.sendMTS(items, 1, 0, 0, pages)); - c.announce(PacketCreator.transferInventory(getTransfer(chr.getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(chr.getId()))); + c.sendPacket(PacketCreator.sendMTS(items, 1, 0, 0, pages)); + c.sendPacket(PacketCreator.transferInventory(getTransfer(chr.getId()))); + c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(chr.getId()))); } } diff --git a/src/main/java/net/server/channel/handlers/FamilyAddHandler.java b/src/main/java/net/server/channel/handlers/FamilyAddHandler.java index 1d9bd53fea..ffc8115d25 100644 --- a/src/main/java/net/server/channel/handlers/FamilyAddHandler.java +++ b/src/main/java/net/server/channel/handlers/FamilyAddHandler.java @@ -45,26 +45,26 @@ public final class FamilyAddHandler extends AbstractMaplePacketHandler { MapleCharacter addChr = c.getChannelServer().getPlayerStorage().getCharacterByName(toAdd); MapleCharacter chr = c.getPlayer(); if(addChr == null) { - c.announce(PacketCreator.sendFamilyMessage(65, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(65, 0)); } else if(addChr == chr) { //only possible through packet editing/client editing i think? - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if(addChr.getMap() != chr.getMap() || (addChr.isHidden()) && chr.gmLevel() < addChr.gmLevel()) { - c.announce(PacketCreator.sendFamilyMessage(69, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(69, 0)); } else if(addChr.getLevel() <= 10) { - c.announce(PacketCreator.sendFamilyMessage(77, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(77, 0)); } else if(Math.abs(addChr.getLevel() - chr.getLevel()) > 20) { - c.announce(PacketCreator.sendFamilyMessage(72, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(72, 0)); } else if(addChr.getFamily() != null && addChr.getFamily() == chr.getFamily()) { //same family - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if(MapleInviteCoordinator.hasInvite(InviteType.FAMILY, addChr.getId())) { - c.announce(PacketCreator.sendFamilyMessage(73, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(73, 0)); } else if(chr.getFamily() != null && addChr.getFamily() != null && addChr.getFamily().getTotalGenerations() + chr.getFamily().getTotalGenerations() > YamlConfig.config.server.FAMILY_MAX_GENERATIONS) { - c.announce(PacketCreator.sendFamilyMessage(76, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(76, 0)); } else { MapleInviteCoordinator.createInvite(InviteType.FAMILY, chr, addChr, addChr.getId()); - addChr.getClient().announce(PacketCreator.sendFamilyInvite(chr.getId(), chr.getName())); + addChr.getClient().sendPacket(PacketCreator.sendFamilyInvite(chr.getId(), chr.getName())); chr.dropMessage("The invite has been sent."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } } diff --git a/src/main/java/net/server/channel/handlers/FamilyPreceptsHandler.java b/src/main/java/net/server/channel/handlers/FamilyPreceptsHandler.java index 68f79b3af3..1ea23d9f5b 100644 --- a/src/main/java/net/server/channel/handlers/FamilyPreceptsHandler.java +++ b/src/main/java/net/server/channel/handlers/FamilyPreceptsHandler.java @@ -17,7 +17,7 @@ public class FamilyPreceptsHandler extends AbstractMaplePacketHandler { if(newPrecepts.length() > 200) return; family.setMessage(newPrecepts, true); //family.broadcastFamilyInfoUpdate(); //probably don't need to broadcast for this? - c.announce(PacketCreator.getFamilyInfo(c.getPlayer().getFamilyEntry())); + c.sendPacket(PacketCreator.getFamilyInfo(c.getPlayer().getFamilyEntry())); } } diff --git a/src/main/java/net/server/channel/handlers/FamilySeparateHandler.java b/src/main/java/net/server/channel/handlers/FamilySeparateHandler.java index bfb72af671..02293785ac 100644 --- a/src/main/java/net/server/channel/handlers/FamilySeparateHandler.java +++ b/src/main/java/net/server/channel/handlers/FamilySeparateHandler.java @@ -52,7 +52,7 @@ public class FamilySeparateHandler extends AbstractMaplePacketHandler { int cost = 2500 * levelDiff; cost += levelDiff * levelDiff; if(c.getPlayer().getMeso() < cost) { - c.announce(PacketCreator.sendFamilyMessage(isSenior ? 81 : 80, cost)); + c.sendPacket(PacketCreator.sendFamilyMessage(isSenior ? 81 : 80, cost)); return; } c.getPlayer().gainMeso(-cost); @@ -61,9 +61,9 @@ public class FamilySeparateHandler extends AbstractMaplePacketHandler { if(senior.getSenior() != null) senior.getSenior().gainReputation(-(repCost/2), false); forkOn.announceToSenior(PacketCreator.serverNotice(5, forkOn.getName() + " has left the family."), true); forkOn.fork(); - c.announce(PacketCreator.getFamilyInfo(forkOn)); //pedigree info will be requested from the client if the window is open + c.sendPacket(PacketCreator.getFamilyInfo(forkOn)); //pedigree info will be requested from the client if the window is open forkOn.updateSeniorFamilyInfo(true); - c.announce(PacketCreator.sendFamilyMessage(1, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(1, 0)); } diff --git a/src/main/java/net/server/channel/handlers/FamilySummonResponseHandler.java b/src/main/java/net/server/channel/handlers/FamilySummonResponseHandler.java index e01f38a2b0..dcbd6b22d9 100644 --- a/src/main/java/net/server/channel/handlers/FamilySummonResponseHandler.java +++ b/src/main/java/net/server/channel/handlers/FamilySummonResponseHandler.java @@ -32,7 +32,7 @@ public class FamilySummonResponseHandler extends AbstractMaplePacketHandler { } else { inviterEntry.refundEntitlement(MapleFamilyEntitlement.SUMMON_FAMILY); inviterEntry.gainReputation(MapleFamilyEntitlement.SUMMON_FAMILY.getRepCost(), false); //refund rep cost if declined - inviter.announce(PacketCreator.getFamilyInfo(inviterEntry)); + inviter.sendPacket(PacketCreator.getFamilyInfo(inviterEntry)); inviter.dropMessage(5, c.getPlayer().getName() + " has denied the summon request."); } } diff --git a/src/main/java/net/server/channel/handlers/FamilyUseHandler.java b/src/main/java/net/server/channel/handlers/FamilyUseHandler.java index 52a343cb03..97f1e2abbf 100644 --- a/src/main/java/net/server/channel/handlers/FamilyUseHandler.java +++ b/src/main/java/net/server/channel/handlers/FamilyUseHandler.java @@ -51,7 +51,7 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler { if(entry.getReputation() < cost || entry.isEntitlementUsed(type)) { return; // shouldn't even be able to request it } - c.announce(PacketCreator.getFamilyInfo(entry)); + c.sendPacket(PacketCreator.getFamilyInfo(entry)); MapleCharacter victim; if(type == MapleFamilyEntitlement.FAMILY_REUINION || type == MapleFamilyEntitlement.SUMMON_FAMILY) { victim = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); @@ -67,7 +67,7 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler { c.getPlayer().changeMap(victim.getMap(), victim.getMap().getPortal(0)); useEntitlement(entry, type); } else { - c.announce(PacketCreator.sendFamilyMessage(75, 0)); // wrong message, but close enough. (client should check this first anyway) + c.sendPacket(PacketCreator.sendFamilyMessage(75, 0)); // wrong message, but close enough. (client should check this first anyway) return; } } else { @@ -75,20 +75,20 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler { && (ownMap.getForcedReturnId() == 999999999 || ownMap.getId() < 100000000) && ownMap.getEventInstance() == null) { if(MapleInviteCoordinator.hasInvite(InviteType.FAMILY_SUMMON, victim.getId())) { - c.announce(PacketCreator.sendFamilyMessage(74, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(74, 0)); return; } MapleInviteCoordinator.createInvite(InviteType.FAMILY_SUMMON, c.getPlayer(), victim, victim.getId(), c.getPlayer().getMap()); - victim.announce(PacketCreator.sendFamilySummonRequest(c.getPlayer().getFamily().getName(), c.getPlayer().getName())); + victim.sendPacket(PacketCreator.sendFamilySummonRequest(c.getPlayer().getFamily().getName(), c.getPlayer().getName())); useEntitlement(entry, type); } else { - c.announce(PacketCreator.sendFamilyMessage(75, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(75, 0)); return; } } } } else { - c.announce(PacketCreator.sendFamilyMessage(67, 0)); + c.sendPacket(PacketCreator.sendFamilyMessage(67, 0)); } } } else if(type == MapleFamilyEntitlement.FAMILY_BONDING) { @@ -133,7 +133,7 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler { private boolean useEntitlement(MapleFamilyEntry entry, MapleFamilyEntitlement entitlement) { if(entry.useEntitlement(entitlement)) { entry.gainReputation(-entitlement.getRepCost(), false); - entry.getChr().announce(PacketCreator.getFamilyInfo(entry)); + entry.getChr().sendPacket(PacketCreator.getFamilyInfo(entry)); return true; } return false; diff --git a/src/main/java/net/server/channel/handlers/FredrickHandler.java b/src/main/java/net/server/channel/handlers/FredrickHandler.java index 7347eae914..8c0f08af84 100644 --- a/src/main/java/net/server/channel/handlers/FredrickHandler.java +++ b/src/main/java/net/server/channel/handlers/FredrickHandler.java @@ -40,7 +40,7 @@ public class FredrickHandler extends AbstractMaplePacketHandler { switch (operation) { case 0x19: //Will never come... - //c.announce(PacketCreator.getFredrick((byte) 0x24)); + //c.sendPacket(PacketCreator.getFredrick((byte) 0x24)); break; case 0x1A: FredrickProcessor.fredrickRetrieveItems(c); diff --git a/src/main/java/net/server/channel/handlers/GeneralChatHandler.java b/src/main/java/net/server/channel/handlers/GeneralChatHandler.java index 75c79e6c3a..cdad5a31c7 100644 --- a/src/main/java/net/server/channel/handlers/GeneralChatHandler.java +++ b/src/main/java/net/server/channel/handlers/GeneralChatHandler.java @@ -38,7 +38,7 @@ public final class GeneralChatHandler extends AbstractMaplePacketHandler { String s = slea.readMapleAsciiString(); MapleCharacter chr = c.getPlayer(); if(chr.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (s.length() > Byte.MAX_VALUE && !chr.isGM()) { diff --git a/src/main/java/net/server/channel/handlers/GiveFameHandler.java b/src/main/java/net/server/channel/handlers/GiveFameHandler.java index a171580708..399b8499b7 100644 --- a/src/main/java/net/server/channel/handlers/GiveFameHandler.java +++ b/src/main/java/net/server/channel/handlers/GiveFameHandler.java @@ -57,7 +57,7 @@ public final class GiveFameHandler extends AbstractMaplePacketHandler { player.message("Could not process the request, since this character currently has the minimum/maximum level of fame."); } } else { - c.announce(PacketCreator.giveFameErrorResponse(status == FameStatus.NOT_TODAY ? 3 : 4)); + c.sendPacket(PacketCreator.giveFameErrorResponse(status == FameStatus.NOT_TODAY ? 3 : 4)); } } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/GuildOperationHandler.java b/src/main/java/net/server/channel/handlers/GuildOperationHandler.java index 0fb36f08aa..4434ac29dd 100644 --- a/src/main/java/net/server/channel/handlers/GuildOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/GuildOperationHandler.java @@ -28,6 +28,7 @@ import constants.game.GameConstants; import net.AbstractMaplePacketHandler; import net.server.Server; import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType; +import net.server.guild.GuildPackets; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildResponse; @@ -59,7 +60,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { int allianceId = -1; switch (type) { case 0x00: - //c.announce(PacketCreator.showGuildInfo(mc)); + //c.sendPacket(PacketCreator.showGuildInfo(mc)); break; case 0x02: if (mc.getGuildId() > 0) { @@ -109,7 +110,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { String targetName = slea.readMapleAsciiString(); MapleGuildResponse mgr = MapleGuild.sendInvitation(c, targetName); if (mgr != null) { - c.announce(mgr.getPacket(targetName)); + c.sendPacket(mgr.getPacket(targetName)); } else {} // already sent invitation, do nothing break; @@ -140,14 +141,14 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { return; } - c.announce(PacketCreator.showGuildInfo(mc)); + c.sendPacket(GuildPackets.showGuildInfo(mc)); allianceId = mc.getGuild().getAllianceId(); if(allianceId > 0) Server.getInstance().getAlliance(allianceId).updateAlliancePackets(mc); mc.saveGuildStatus(); // update database - mc.getMap().broadcastMessage(mc, PacketCreator.guildNameChanged(mc.getId(), mc.getGuild().getName())); // thanks Vcoc for pointing out an issue with updating guild tooltip to players in the map - mc.getMap().broadcastMessage(mc, PacketCreator.guildMarkChanged(mc.getId(), mc.getGuild())); + mc.getMap().broadcastPacket(mc, GuildPackets.guildNameChanged(mc.getId(), mc.getGuild().getName())); // thanks Vcoc for pointing out an issue with updating guild tooltip to players in the map + mc.getMap().broadcastPacket(mc, GuildPackets.guildMarkChanged(mc.getId(), mc.getGuild())); break; case 0x07: cid = slea.readInt(); @@ -159,16 +160,16 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { allianceId = mc.getGuild().getAllianceId(); - c.announce(PacketCreator.updateGP(mc.getGuildId(), 0)); + c.sendPacket(GuildPackets.updateGP(mc.getGuildId(), 0)); Server.getInstance().leaveGuild(mc.getMGC()); - c.announce(PacketCreator.showGuildInfo(null)); + c.sendPacket(GuildPackets.showGuildInfo(null)); if(allianceId > 0) Server.getInstance().getAlliance(allianceId).updateAlliancePackets(mc); mc.getMGC().setGuildId(0); mc.getMGC().setGuildRank(5); mc.saveGuildStatus(); - mc.getMap().broadcastMessage(mc, PacketCreator.guildNameChanged(mc.getId(), "")); + mc.getMap().broadcastPacket(mc, GuildPackets.guildNameChanged(mc.getId(), "")); break; case 0x08: allianceId = mc.getGuild().getAllianceId(); @@ -213,7 +214,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { return; } if (mc.getMeso() < YamlConfig.config.server.CHANGE_EMBLEM_COST) { - c.announce(PacketCreator.serverNotice(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CHANGE_EMBLEM_COST) + " mesos to change the Guild emblem.")); + c.sendPacket(PacketCreator.serverNotice(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CHANGE_EMBLEM_COST) + " mesos to change the Guild emblem.")); return; } short bg = slea.readShort(); @@ -224,7 +225,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { if (mc.getGuild() != null && mc.getGuild().getAllianceId() > 0) { MapleAlliance alliance = mc.getAlliance(); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, c.getWorld()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, c.getWorld()), -1, -1); } mc.gainMeso(-YamlConfig.config.server.CHANGE_EMBLEM_COST, true, false, true); diff --git a/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java b/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java index 64fe53fd34..71c3a25847 100644 --- a/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java +++ b/src/main/java/net/server/channel/handlers/HiredMerchantRequest.java @@ -53,11 +53,11 @@ public final class HiredMerchantRequest extends AbstractMaplePacketHandler { MaplePlayerShop shop = mc.getPlayerShop(); if (shop != null && shop.isOwner(mc)) { - chr.announce(PacketCreator.getMiniRoomError(13)); + chr.sendPacket(PacketCreator.getMiniRoomError(13)); return; } } else { - chr.announce(PacketCreator.getMiniRoomError(13)); + chr.sendPacket(PacketCreator.getMiniRoomError(13)); return; } } @@ -65,7 +65,7 @@ public final class HiredMerchantRequest extends AbstractMaplePacketHandler { Point cpos = chr.getPosition(); MaplePortal portal = chr.getMap().findClosestTeleportPortal(cpos); if (portal != null && portal.getPosition().distance(cpos) < 120.0) { - chr.announce(PacketCreator.getMiniRoomError(10)); + chr.sendPacket(PacketCreator.getMiniRoomError(10)); return; } } catch (Exception e) { @@ -76,9 +76,9 @@ public final class HiredMerchantRequest extends AbstractMaplePacketHandler { if (!chr.hasMerchant()) { try { if (ItemFactory.MERCHANT.loadItems(chr.getId(), false).isEmpty() && chr.getMerchantMeso() == 0) { - c.announce(PacketCreator.hiredMerchantBox()); + c.sendPacket(PacketCreator.hiredMerchantBox()); } else { - chr.announce(PacketCreator.retrieveFirstMessage()); + chr.sendPacket(PacketCreator.retrieveFirstMessage()); } } catch (SQLException ex) { ex.printStackTrace(); diff --git a/src/main/java/net/server/channel/handlers/InventoryMergeHandler.java b/src/main/java/net/server/channel/handlers/InventoryMergeHandler.java index 307e62ea04..5a09df8d85 100644 --- a/src/main/java/net/server/channel/handlers/InventoryMergeHandler.java +++ b/src/main/java/net/server/channel/handlers/InventoryMergeHandler.java @@ -43,7 +43,7 @@ public final class InventoryMergeHandler extends AbstractMaplePacketHandler { chr.getAutobanManager().setTimestamp(2, Server.getInstance().getCurrentTimestamp(), 4); if(!YamlConfig.config.server.USE_ITEM_SORT) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -106,7 +106,7 @@ public final class InventoryMergeHandler extends AbstractMaplePacketHandler { inventory.unlockInventory(); } - c.announce(PacketCreator.finishedSort(inventoryType.getType())); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.finishedSort(inventoryType.getType())); + c.sendPacket(PacketCreator.enableActions()); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/InventorySortHandler.java b/src/main/java/net/server/channel/handlers/InventorySortHandler.java index e3b63fe9a0..028db91ac9 100644 --- a/src/main/java/net/server/channel/handlers/InventorySortHandler.java +++ b/src/main/java/net/server/channel/handlers/InventorySortHandler.java @@ -267,7 +267,7 @@ public final class InventorySortHandler extends AbstractMaplePacketHandler { chr.getAutobanManager().setTimestamp(3, Server.getInstance().getCurrentTimestamp(), 4); if(!YamlConfig.config.server.USE_ITEM_SORT) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -308,8 +308,8 @@ public final class InventorySortHandler extends AbstractMaplePacketHandler { inventory.unlockInventory(); } - c.announce(PacketCreator.modifyInventory(true, mods)); - c.announce(PacketCreator.finishedSort2(invType)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.modifyInventory(true, mods)); + c.sendPacket(PacketCreator.finishedSort2(invType)); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/ItemMoveHandler.java b/src/main/java/net/server/channel/handlers/ItemMoveHandler.java index 99c4594435..2ad2df288d 100644 --- a/src/main/java/net/server/channel/handlers/ItemMoveHandler.java +++ b/src/main/java/net/server/channel/handlers/ItemMoveHandler.java @@ -37,7 +37,7 @@ public final class ItemMoveHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { slea.skip(4); if(c.getPlayer().getAutobanManager().getLastSpam(6) + 300 > currentServerTime()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } diff --git a/src/main/java/net/server/channel/handlers/ItemRewardHandler.java b/src/main/java/net/server/channel/handlers/ItemRewardHandler.java index 853f0f0c6d..eeeee09d7c 100644 --- a/src/main/java/net/server/channel/handlers/ItemRewardHandler.java +++ b/src/main/java/net/server/channel/handlers/ItemRewardHandler.java @@ -54,7 +54,7 @@ public final class ItemRewardHandler extends AbstractMaplePacketHandler { Pair> rewards = ii.getItemReward(itemId); for (RewardItem reward : rewards.getRight()) { if (!MapleInventoryManipulator.checkSpace(c, reward.itemid, reward.quantity, "")) { - c.announce(PacketCreator.getShowInventoryFull()); + c.sendPacket(PacketCreator.getShowInventoryFull()); break; } if (Randomizer.nextInt(rewards.getLeft()) < reward.prob) {//Is it even possible to get an item with prob 1? @@ -77,6 +77,6 @@ public final class ItemRewardHandler extends AbstractMaplePacketHandler { break; } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/LeftKnockbackHandler.java b/src/main/java/net/server/channel/handlers/LeftKnockbackHandler.java index 8a05b55cb0..7d5e223bbb 100644 --- a/src/main/java/net/server/channel/handlers/LeftKnockbackHandler.java +++ b/src/main/java/net/server/channel/handlers/LeftKnockbackHandler.java @@ -33,7 +33,7 @@ import tools.data.input.SeekableLittleEndianAccessor; */ public class LeftKnockbackHandler extends AbstractMaplePacketHandler { public void handlePacket(SeekableLittleEndianAccessor slea, final MapleClient c) { - c.announce(PacketCreator.leftKnockBack()); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.leftKnockBack()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/MTSHandler.java b/src/main/java/net/server/channel/handlers/MTSHandler.java index 2b4b3aa46b..007565f827 100644 --- a/src/main/java/net/server/channel/handlers/MTSHandler.java +++ b/src/main/java/net/server/channel/handlers/MTSHandler.java @@ -29,6 +29,7 @@ import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; +import net.packet.Packet; import net.server.Server; import net.server.channel.Channel; import server.MTSItemInfo; @@ -114,9 +115,9 @@ public final class MTSHandler extends AbstractMaplePacketHandler { if (rs.next()) { 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.announce(getMTS(1, 0, 0)); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + 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; @@ -219,11 +220,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler { e.printStackTrace(); } c.getPlayer().gainMeso(-5000, false); - c.announce(PacketCreator.MTSConfirmSell()); - c.announce(getMTS(1, 0, 0)); + c.sendPacket(PacketCreator.MTSConfirmSell()); + c.sendPacket(getMTS(1, 0, 0)); c.enableCSActions(); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + 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 @@ -238,18 +239,18 @@ public final class MTSHandler extends AbstractMaplePacketHandler { int page = slea.readInt(); c.getPlayer().changePage(page); if (tab == 4 && type == 0) { - c.announce(getCart(c.getPlayer().getId())); + c.sendPacket(getCart(c.getPlayer().getId())); } else if (tab == c.getPlayer().getCurrentTab() && type == c.getPlayer().getCurrentType() && c.getPlayer().getSearch() != null) { - c.announce(getMTSSearch(tab, type, c.getPlayer().getCurrentCI(), c.getPlayer().getSearch(), page)); + c.sendPacket(getMTSSearch(tab, type, c.getPlayer().getCurrentCI(), c.getPlayer().getSearch(), page)); } else { c.getPlayer().setSearch(null); - c.announce(getMTS(tab, type, page)); + c.sendPacket(getMTS(tab, type, page)); } c.getPlayer().changeTab(tab); c.getPlayer().changeType(type); c.enableCSActions(); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); } else if (op == 6) { //search int tab = slea.readInt(); int type = slea.readInt(); @@ -261,11 +262,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler { c.getPlayer().changeType(type); c.getPlayer().changeCI(ci); c.enableCSActions(); - c.announce(PacketCreator.enableActions()); - c.announce(getMTSSearch(tab, type, ci, search, c.getPlayer().getCurrentPage())); - c.announce(PacketCreator.showMTSCash(c.getPlayer())); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + c.sendPacket(PacketCreator.enableActions()); + c.sendPacket(getMTSSearch(tab, type, ci, search, c.getPlayer().getCurrentPage())); + 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 = slea.readInt(); //id of the item Connection con = null; @@ -285,9 +286,9 @@ public final class MTSHandler extends AbstractMaplePacketHandler { e.printStackTrace(); } c.enableCSActions(); - c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + 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 = slea.readInt(); //id of the item Connection con = null; @@ -344,10 +345,10 @@ public final class MTSHandler extends AbstractMaplePacketHandler { } MapleInventoryManipulator.addFromDrop(c, i, false); c.enableCSActions(); - c.announce(getCart(c.getPlayer().getId())); - c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); - c.announce(PacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition())); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + 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(); ps.close(); @@ -385,11 +386,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler { } catch (SQLException e) { e.printStackTrace(); } - c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); + c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); c.enableCSActions(); - c.announce(PacketCreator.enableActions()); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + 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 = slea.readInt(); //id of the item Connection con = null; @@ -404,10 +405,10 @@ public final class MTSHandler extends AbstractMaplePacketHandler { } catch (SQLException e) { e.printStackTrace(); } - c.announce(getCart(c.getPlayer().getId())); + c.sendPacket(getCart(c.getPlayer().getId())); c.enableCSActions(); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + 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 @@ -458,14 +459,14 @@ public final class MTSHandler extends AbstractMaplePacketHandler { pse.close(); c.getPlayer().getCashShop().gainCash(4, -price); c.enableCSActions(); - c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); - c.announce(PacketCreator.MTSConfirmBuy()); - c.announce(PacketCreator.showMTSCash(c.getPlayer())); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); - c.announce(PacketCreator.enableActions()); + 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()))); + c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + c.sendPacket(PacketCreator.enableActions()); } else { - c.announce(PacketCreator.MTSFailBuy()); + c.sendPacket(PacketCreator.MTSFailBuy()); } } rs.close(); @@ -473,7 +474,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { con.close(); } catch (SQLException e) { e.printStackTrace(); - c.announce(PacketCreator.MTSFailBuy()); + c.sendPacket(PacketCreator.MTSFailBuy()); } } else if (op == 17) { //buy from cart int id = slea.readInt(); //id of the item @@ -518,14 +519,14 @@ public final class MTSHandler extends AbstractMaplePacketHandler { pse.executeUpdate(); pse.close(); c.getPlayer().getCashShop().gainCash(4, -price); - c.announce(getCart(c.getPlayer().getId())); + c.sendPacket(getCart(c.getPlayer().getId())); c.enableCSActions(); - c.announce(PacketCreator.MTSConfirmBuy()); - c.announce(PacketCreator.showMTSCash(c.getPlayer())); - c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); - c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + c.sendPacket(PacketCreator.MTSConfirmBuy()); + c.sendPacket(PacketCreator.showMTSCash(c.getPlayer())); + c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); } else { - c.announce(PacketCreator.MTSFailBuy()); + c.sendPacket(PacketCreator.MTSFailBuy()); } } rs.close(); @@ -533,13 +534,13 @@ public final class MTSHandler extends AbstractMaplePacketHandler { con.close(); } catch (SQLException e) { e.printStackTrace(); - c.announce(PacketCreator.MTSFailBuy()); + c.sendPacket(PacketCreator.MTSFailBuy()); } } else { System.out.println("Unhandled OP(MTS): " + op + " Packet: " + slea.toString()); } } else { - c.announce(PacketCreator.showMTSCash(c.getPlayer())); + c.sendPacket(PacketCreator.showMTSCash(c.getPlayer())); } } @@ -598,7 +599,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { return items; } - public byte[] getCart(int cid) { + public Packet getCart(int cid) { List items = new ArrayList<>(); Connection con = null; PreparedStatement ps; @@ -726,7 +727,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { return items; } - private static byte[] getMTS(int tab, int type, int page) { + private static Packet getMTS(int tab, int type, int page) { List items = new ArrayList<>(); Connection con = null; PreparedStatement ps; @@ -806,7 +807,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { return PacketCreator.sendMTS(items, tab, type, page, pages); // resniff } - public byte[] getMTSSearch(int tab, int type, int cOi, String search, int page) { + public Packet getMTSSearch(int tab, int type, int cOi, String search, int page) { List items = new ArrayList<>(); MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); String listaitems = ""; diff --git a/src/main/java/net/server/channel/handlers/MagicDamageHandler.java b/src/main/java/net/server/channel/handlers/MagicDamageHandler.java index 72f00f05f4..963f0cc0ca 100644 --- a/src/main/java/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/MagicDamageHandler.java @@ -28,6 +28,7 @@ import constants.skills.Bishop; import constants.skills.Evan; import constants.skills.FPArchMage; import constants.skills.ILArchMage; +import net.packet.Packet; import server.MapleStatEffect; import tools.PacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -55,11 +56,11 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler { if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { chr.setDojoEnergy(chr.getDojoEnergy() + + YamlConfig.config.server.DOJO_ENERGY_ATK); - c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); + c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } int charge = (attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG) ? attack.charge : -1; - byte[] packet = PacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, charge, attack.speed, attack.direction, attack.display); + Packet packet = PacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, charge, attack.speed, attack.direction, attack.display); chr.getMap().broadcastMessage(chr, packet, false, true); MapleStatEffect effect = attack.getAttackEffect(chr, null); @@ -69,7 +70,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler { if (chr.skillIsCooling(attack.skill)) { return; } else { - c.announce(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); + c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000); } } diff --git a/src/main/java/net/server/channel/handlers/MesoDropHandler.java b/src/main/java/net/server/channel/handlers/MesoDropHandler.java index cd37bc745f..196fbe327a 100644 --- a/src/main/java/net/server/channel/handlers/MesoDropHandler.java +++ b/src/main/java/net/server/channel/handlers/MesoDropHandler.java @@ -37,7 +37,7 @@ public final class MesoDropHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter player = c.getPlayer(); if (!player.isAlive()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } slea.skip(4); @@ -48,14 +48,14 @@ public final class MesoDropHandler extends AbstractMaplePacketHandler { if (meso <= player.getMeso() && meso > 9 && meso < 50001) { player.gainMeso(-meso, false, true, false); } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } finally { c.releaseClient(); } } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } diff --git a/src/main/java/net/server/channel/handlers/MessengerHandler.java b/src/main/java/net/server/channel/handlers/MessengerHandler.java index 62efac1f3b..1a84d63bef 100644 --- a/src/main/java/net/server/channel/handlers/MessengerHandler.java +++ b/src/main/java/net/server/channel/handlers/MessengerHandler.java @@ -82,30 +82,30 @@ public final class MessengerHandler extends AbstractMaplePacketHandler { break; case 0x03: if (messenger == null) { - c.announce(PacketCreator.messengerChat(player.getName() + " : This Maple Messenger is currently unavailable. Please quit this chat.")); + c.sendPacket(PacketCreator.messengerChat(player.getName() + " : This Maple Messenger is currently unavailable. Please quit this chat.")); } else if (messenger.getMembers().size() < 3) { input = slea.readMapleAsciiString(); MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(input); if (target != null) { if (target.getMessenger() == null) { if (MapleInviteCoordinator.createInvite(InviteType.MESSENGER, c.getPlayer(), messenger.getId(), target.getId())) { - target.getClient().announce(PacketCreator.messengerInvite(c.getPlayer().getName(), messenger.getId())); - c.announce(PacketCreator.messengerNote(input, 4, 1)); + target.sendPacket(PacketCreator.messengerInvite(c.getPlayer().getName(), messenger.getId())); + c.sendPacket(PacketCreator.messengerNote(input, 4, 1)); } else { - c.announce(PacketCreator.messengerChat(player.getName() + " : " + input + " is already managing a Maple Messenger invitation")); + c.sendPacket(PacketCreator.messengerChat(player.getName() + " : " + input + " is already managing a Maple Messenger invitation")); } } else { - c.announce(PacketCreator.messengerChat(player.getName() + " : " + input + " is already using Maple Messenger")); + c.sendPacket(PacketCreator.messengerChat(player.getName() + " : " + input + " is already using Maple Messenger")); } } else { if (world.find(input) > -1) { world.messengerInvite(c.getPlayer().getName(), messenger.getId(), input, c.getChannel()); } else { - c.announce(PacketCreator.messengerNote(input, 4, 0)); + c.sendPacket(PacketCreator.messengerNote(input, 4, 0)); } } } else { - c.announce(PacketCreator.messengerChat(player.getName() + " : You cannot have more than 3 people in the Maple Messenger")); + c.sendPacket(PacketCreator.messengerChat(player.getName() + " : You cannot have more than 3 people in the Maple Messenger")); } break; case 0x05: diff --git a/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java b/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java index ec5a787e86..0f921988c0 100644 --- a/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java +++ b/src/main/java/net/server/channel/handlers/MobDamageMobFriendlyHandler.java @@ -84,6 +84,6 @@ public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandle } map.broadcastMessage(PacketCreator.MobDamageMobFriendly(monster, damage, remainingHp), monster.getPosition()); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/MonsterBookCoverHandler.java b/src/main/java/net/server/channel/handlers/MonsterBookCoverHandler.java index abb60a2b92..b7b74987ce 100644 --- a/src/main/java/net/server/channel/handlers/MonsterBookCoverHandler.java +++ b/src/main/java/net/server/channel/handlers/MonsterBookCoverHandler.java @@ -31,7 +31,7 @@ public final class MonsterBookCoverHandler extends AbstractMaplePacketHandler { int id = slea.readInt(); if (id == 0 || id / 10000 == 238) { c.getPlayer().setMonsterBookCover(id); - c.announce(PacketCreator.changeCover(id)); + c.sendPacket(PacketCreator.changeCover(id)); } } } diff --git a/src/main/java/net/server/channel/handlers/MonsterCarnivalHandler.java b/src/main/java/net/server/channel/handlers/MonsterCarnivalHandler.java index 912aac9463..4ca4d92e78 100644 --- a/src/main/java/net/server/channel/handlers/MonsterCarnivalHandler.java +++ b/src/main/java/net/server/channel/handlers/MonsterCarnivalHandler.java @@ -57,8 +57,8 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { if (tab == 0) { final List> mobs = c.getPlayer().getMap().getMobsToSpawn(); if (num >= mobs.size() || c.getPlayer().getCP() < mobs.get(num).right) { - c.announce(PacketCreator.CPQMessage((byte) 1)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.CPQMessage((byte) 1)); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -66,8 +66,8 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { MonsterCarnival mcpq = c.getPlayer().getMonsterCarnival(); if (mcpq != null) { if (!mcpq.canSummonR() && c.getPlayer().getTeam() == 0 || !mcpq.canSummonB() && c.getPlayer().getTeam() == 1) { - c.announce(PacketCreator.CPQMessage((byte) 2)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.CPQMessage((byte) 2)); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -82,7 +82,7 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { c.getPlayer().getMap().addMonsterSpawn(mob, 1, c.getPlayer().getTeam()); c.getPlayer().getMap().addAllMonsterSpawn(mob, 1, c.getPlayer().getTeam()); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } neededCP = mobs.get(num).right; @@ -90,13 +90,13 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { final List skillid = c.getPlayer().getMap().getSkillIds(); if (num >= skillid.size()) { c.getPlayer().dropMessage(5, "An unexpected error has occurred."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } final MCSkill skill = MapleCarnivalFactory.getInstance().getSkill(skillid.get(num)); //ugh wtf if (skill == null || c.getPlayer().getCP() < skill.cpLoss) { - c.announce(PacketCreator.CPQMessage((byte) 1)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.CPQMessage((byte) 1)); + c.sendPacket(PacketCreator.enableActions()); return; } final MapleDisease dis = skill.getDisease(); @@ -131,20 +131,20 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { } } neededCP = skill.cpLoss; - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (tab == 2) { //protectors final MCSkill skill = MapleCarnivalFactory.getInstance().getGuardian(num); if (skill == null || c.getPlayer().getCP() < skill.cpLoss) { - c.announce(PacketCreator.CPQMessage((byte) 1)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.CPQMessage((byte) 1)); + c.sendPacket(PacketCreator.enableActions()); return; } MonsterCarnival mcpq = c.getPlayer().getMonsterCarnival(); if (mcpq != null) { if (!mcpq.canGuardianR() && c.getPlayer().getTeam() == 0 || !mcpq.canGuardianB() && c.getPlayer().getTeam() == 1) { - c.announce(PacketCreator.CPQMessage((byte) 2)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.CPQMessage((byte) 2)); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -152,17 +152,17 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { if (success != 1) { switch (success) { case -1: - c.announce(PacketCreator.CPQMessage((byte) 3)); + c.sendPacket(PacketCreator.CPQMessage((byte) 3)); break; case 0: - c.announce(PacketCreator.CPQMessage((byte) 4)); + c.sendPacket(PacketCreator.CPQMessage((byte) 4)); break; default: - c.announce(PacketCreator.CPQMessage((byte) 3)); + c.sendPacket(PacketCreator.CPQMessage((byte) 3)); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } else { neededCP = skill.cpLoss; diff --git a/src/main/java/net/server/channel/handlers/MoveDragonHandler.java b/src/main/java/net/server/channel/handlers/MoveDragonHandler.java index 2195e42d76..e9b5ce4dfc 100644 --- a/src/main/java/net/server/channel/handlers/MoveDragonHandler.java +++ b/src/main/java/net/server/channel/handlers/MoveDragonHandler.java @@ -45,7 +45,7 @@ public class MoveDragonHandler extends AbstractMovementPacketHandler { slea.seek(movementDataStart); if (chr.isHidden()) { - chr.getMap().broadcastGMMessage(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength)); + chr.getMap().broadcastGMPacket(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength)); } else { chr.getMap().broadcastMessage(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength), dragon.getPosition()); } diff --git a/src/main/java/net/server/channel/handlers/MoveLifeHandler.java b/src/main/java/net/server/channel/handlers/MoveLifeHandler.java index bd0d6ba87c..0bbf41d8aa 100644 --- a/src/main/java/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/main/java/net/server/channel/handlers/MoveLifeHandler.java @@ -150,9 +150,9 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { if (aggro == null) return; if (nextUse != null) { - c.announce(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel)); + c.sendPacket(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel)); } else { - c.announce(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro)); + c.sendPacket(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro)); } diff --git a/src/main/java/net/server/channel/handlers/NPCAnimationHandler.java b/src/main/java/net/server/channel/handlers/NPCAnimationHandler.java index 5be8060028..499eb4bc83 100644 --- a/src/main/java/net/server/channel/handlers/NPCAnimationHandler.java +++ b/src/main/java/net/server/channel/handlers/NPCAnimationHandler.java @@ -24,8 +24,8 @@ package net.server.channel.handlers; import client.MapleClient; import net.AbstractMaplePacketHandler; import net.opcodes.SendOpcode; +import net.packet.OutPacket; import tools.data.input.SeekableLittleEndianAccessor; -import tools.data.output.MaplePacketLittleEndianWriter; public final class NPCAnimationHandler extends AbstractMaplePacketHandler { @Override @@ -33,20 +33,17 @@ public final class NPCAnimationHandler extends AbstractMaplePacketHandler { if (c.getPlayer().isChangingMaps()) { // possible cause of error 38 in some map transition scenarios, thanks Arnah return; } - - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + + OutPacket p = OutPacket.create(SendOpcode.NPC_ACTION); int length = (int) slea.available(); if (length == 6) { // NPC Talk - mplew.writeShort(SendOpcode.NPC_ACTION.getValue()); - mplew.writeInt(slea.readInt()); - mplew.write(slea.readByte()); // 2 bytes, thanks resinate - mplew.write(slea.readByte()); - c.announce(mplew.getPacket()); + p.writeInt(slea.readInt()); + p.writeByte(slea.readByte()); // 2 bytes, thanks resinate + p.writeByte(slea.readByte()); } else if (length > 6) { // NPC Move byte[] bytes = slea.read(length - 9); - mplew.writeShort(SendOpcode.NPC_ACTION.getValue()); - mplew.write(bytes); - c.announce(mplew.getPacket()); + p.writeBytes(bytes); } + c.sendPacket(p); } } diff --git a/src/main/java/net/server/channel/handlers/NPCTalkHandler.java b/src/main/java/net/server/channel/handlers/NPCTalkHandler.java index a283e495b2..4cffe9c820 100644 --- a/src/main/java/net/server/channel/handlers/NPCTalkHandler.java +++ b/src/main/java/net/server/channel/handlers/NPCTalkHandler.java @@ -37,12 +37,12 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { if (!c.getPlayer().isAlive()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if(currentServerTime() - c.getPlayer().getNpcCooldown() < YamlConfig.config.server.BLOCK_NPC_RACE_CONDT) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -56,7 +56,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler { DueyProcessor.dueySendTalk(c, false); } else { if (c.getCM() != null || c.getQM() != null) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -74,7 +74,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler { FilePrinter.printError(FilePrinter.NPC_UNCODED, "NPC " + npc.getName() + "(" + npc.getId() + ") is not coded."); return; } else if (c.getPlayer().getShop() != null) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } diff --git a/src/main/java/net/server/channel/handlers/NewYearCardHandler.java b/src/main/java/net/server/channel/handlers/NewYearCardHandler.java index 0c351feed2..4bee6e232c 100644 --- a/src/main/java/net/server/channel/handlers/NewYearCardHandler.java +++ b/src/main/java/net/server/channel/handlers/NewYearCardHandler.java @@ -72,21 +72,21 @@ public final class NewYearCardHandler extends AbstractMaplePacketHandler { Server.getInstance().setNewYearCard(newyear); newyear.startNewYearCardTask(); - player.announce(PacketCreator.onNewYearCardRes(player, newyear, 4, 0)); // successfully sent + player.sendPacket(PacketCreator.onNewYearCardRes(player, newyear, 4, 0)); // successfully sent } else { - player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0xF)); // cannot send to yourself + player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0xF)); // cannot send to yourself } } else { - player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x13)); // cannot find such character + player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x13)); // cannot find such character } } else { - player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full + player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full } } else { - player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, status)); // item and inventory errors + player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, status)); // item and inventory errors } } else { - player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x11)); // have no card to send + player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x11)); // have no card to send } } else { //receiver accepted the card int cardid = slea.readInt(); @@ -103,7 +103,7 @@ public final class NewYearCardHandler extends AbstractMaplePacketHandler { if(!newyear.getMessage().isEmpty()) player.dropMessage(6, "[New Year] " + newyear.getSenderName() + ": " + newyear.getMessage()); player.addNewYearRecord(newyear); - player.announce(PacketCreator.onNewYearCardRes(player, newyear, 6, 0)); // successfully rcvd + player.sendPacket(PacketCreator.onNewYearCardRes(player, newyear, 6, 0)); // successfully rcvd player.getMap().broadcastMessage(PacketCreator.onNewYearCardRes(player, newyear, 0xD, 0)); @@ -113,7 +113,7 @@ public final class NewYearCardHandler extends AbstractMaplePacketHandler { sender.dropMessage(6, "[New Year] Your addressee successfully received the New Year card."); } } else { - player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full + player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full } } else { player.dropMessage(6, "[New Year] The sender of the New Year card already dropped it. Nothing to receive."); diff --git a/src/main/java/net/server/channel/handlers/NoteActionHandler.java b/src/main/java/net/server/channel/handlers/NoteActionHandler.java index 00d5cb5d90..e151dd4e97 100644 --- a/src/main/java/net/server/channel/handlers/NoteActionHandler.java +++ b/src/main/java/net/server/channel/handlers/NoteActionHandler.java @@ -41,7 +41,7 @@ public final class NoteActionHandler extends AbstractMaplePacketHandler { String message = slea.readMapleAsciiString(); try { if (c.getPlayer().getCashShop().isOpened()) { - c.announce(PacketCreator.showCashInventory(c)); + c.sendPacket(PacketCreator.showCashInventory(c)); } c.getPlayer().sendNote(charname, message, (byte) 1); diff --git a/src/main/java/net/server/channel/handlers/OpenFamilyHandler.java b/src/main/java/net/server/channel/handlers/OpenFamilyHandler.java index f4be5f63d7..5f8f834078 100644 --- a/src/main/java/net/server/channel/handlers/OpenFamilyHandler.java +++ b/src/main/java/net/server/channel/handlers/OpenFamilyHandler.java @@ -35,7 +35,7 @@ public final class OpenFamilyHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return; MapleCharacter chr = c.getPlayer(); - c.announce(PacketCreator.getFamilyInfo(chr.getFamilyEntry())); + c.sendPacket(PacketCreator.getFamilyInfo(chr.getFamilyEntry())); } } diff --git a/src/main/java/net/server/channel/handlers/OpenFamilyPedigreeHandler.java b/src/main/java/net/server/channel/handlers/OpenFamilyPedigreeHandler.java index 30926e0289..eb3c02de09 100644 --- a/src/main/java/net/server/channel/handlers/OpenFamilyPedigreeHandler.java +++ b/src/main/java/net/server/channel/handlers/OpenFamilyPedigreeHandler.java @@ -36,7 +36,7 @@ public final class OpenFamilyPedigreeHandler extends AbstractMaplePacketHandler if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return; MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); if(target != null && target.getFamily() != null) { - c.announce(PacketCreator.showPedigree(target.getFamilyEntry())); + c.sendPacket(PacketCreator.showPedigree(target.getFamilyEntry())); } } } diff --git a/src/main/java/net/server/channel/handlers/OwlWarpHandler.java b/src/main/java/net/server/channel/handlers/OwlWarpHandler.java index fed429d03e..587ecb8dde 100644 --- a/src/main/java/net/server/channel/handlers/OwlWarpHandler.java +++ b/src/main/java/net/server/channel/handlers/OwlWarpHandler.java @@ -38,7 +38,7 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler { int mapid = slea.readInt(); if(ownerid == c.getPlayer().getId()) { - c.announce(PacketCreator.serverNotice(1, "You cannot visit your own shop.")); + c.sendPacket(PacketCreator.serverNotice(1, "You cannot visit your own shop.")); return; } @@ -47,8 +47,8 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler { if(hm == null || hm.getMapId() != mapid || !hm.hasItem(c.getPlayer().getOwlSearch())) { ps = c.getWorldServer().getPlayerShop(ownerid); if(ps == null || ps.getMapId() != mapid || !ps.hasItem(c.getPlayer().getOwlSearch())) { - if(hm == null && ps == null) c.announce(PacketCreator.getOwlMessage(1)); - else c.announce(PacketCreator.getOwlMessage(3)); + if(hm == null && ps == null) c.sendPacket(PacketCreator.getOwlMessage(1)); + else c.sendPacket(PacketCreator.getOwlMessage(3)); return; } @@ -59,22 +59,22 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler { if(ps.isOpen()) { //change map has a delay, must double check if(!ps.visitShop(c.getPlayer())) { - if(!ps.isBanned(c.getPlayer().getName())) c.announce(PacketCreator.getOwlMessage(2)); - else c.announce(PacketCreator.getOwlMessage(17)); + if(!ps.isBanned(c.getPlayer().getName())) c.sendPacket(PacketCreator.getOwlMessage(2)); + else c.sendPacket(PacketCreator.getOwlMessage(17)); } } else { - //c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); - c.announce(PacketCreator.getOwlMessage(18)); + //c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); + c.sendPacket(PacketCreator.getOwlMessage(18)); } } else { - c.announce(PacketCreator.serverNotice(1, "That shop is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); + c.sendPacket(PacketCreator.serverNotice(1, "That shop is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); } } else { - c.announce(PacketCreator.serverNotice(1, "That shop is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); + c.sendPacket(PacketCreator.serverNotice(1, "That shop is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); } } else { - //c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); - c.announce(PacketCreator.getOwlMessage(18)); + //c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); + c.sendPacket(PacketCreator.getOwlMessage(18)); } } else { if(hm.isOpen()) { @@ -84,25 +84,25 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler { if(hm.isOpen()) { //change map has a delay, must double check if(hm.addVisitor(c.getPlayer())) { - c.announce(PacketCreator.getHiredMerchant(c.getPlayer(), hm, false)); + c.sendPacket(PacketCreator.getHiredMerchant(c.getPlayer(), hm, false)); c.getPlayer().setHiredMerchant(hm); } else { - //c.announce(PacketCreator.serverNotice(1, hm.getOwner() + "'s merchant is full. Wait awhile before trying again.")); - c.announce(PacketCreator.getOwlMessage(2)); + //c.sendPacket(PacketCreator.serverNotice(1, hm.getOwner() + "'s merchant is full. Wait awhile before trying again.")); + c.sendPacket(PacketCreator.getOwlMessage(2)); } } else { - //c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); - c.announce(PacketCreator.getOwlMessage(18)); + //c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); + c.sendPacket(PacketCreator.getOwlMessage(18)); } } else { - c.announce(PacketCreator.serverNotice(1, "That merchant is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); + c.sendPacket(PacketCreator.serverNotice(1, "That merchant is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); } } else { - c.announce(PacketCreator.serverNotice(1, "That merchant is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); + c.sendPacket(PacketCreator.serverNotice(1, "That merchant is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'.")); } } else { - //c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); - c.announce(PacketCreator.getOwlMessage(18)); + //c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance.")); + c.sendPacket(PacketCreator.getOwlMessage(18)); } } } diff --git a/src/main/java/net/server/channel/handlers/PartyOperationHandler.java b/src/main/java/net/server/channel/handlers/PartyOperationHandler.java index 2bd2f3e0eb..443dd9b107 100644 --- a/src/main/java/net/server/channel/handlers/PartyOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/PartyOperationHandler.java @@ -69,7 +69,7 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler { if (res == InviteResult.ACCEPTED) { MapleParty.joinParty(player, partyid, false); } else { - c.announce(PacketCreator.serverNotice(5, "You couldn't join the party due to an expired invitation request.")); + c.sendPacket(PacketCreator.serverNotice(5, "You couldn't join the party due to an expired invitation request.")); } break; } @@ -78,11 +78,11 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler { MapleCharacter invited = world.getPlayerStorage().getCharacterByName(name); if (invited != null) { if(invited.getLevel() < 10 && (!YamlConfig.config.server.USE_PARTY_FOR_STARTERS || player.getLevel() >= 10)) { //min requirement is level 10 - c.announce(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements.")); + c.sendPacket(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements.")); return; } if(YamlConfig.config.server.USE_PARTY_FOR_STARTERS && invited.getLevel() >= 10 && player.getLevel() < 10) { //trying to invite high level - c.announce(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements.")); + c.sendPacket(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements.")); return; } @@ -96,18 +96,18 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler { } if (party.getMembers().size() < 6) { if (MapleInviteCoordinator.createInvite(InviteType.PARTY, player, party.getId(), invited.getId())) { - invited.getClient().announce(PacketCreator.partyInvite(player)); + invited.sendPacket(PacketCreator.partyInvite(player)); } else { - c.announce(PacketCreator.partyStatusMessage(22, invited.getName())); + c.sendPacket(PacketCreator.partyStatusMessage(22, invited.getName())); } } else { - c.announce(PacketCreator.partyStatusMessage(17)); + c.sendPacket(PacketCreator.partyStatusMessage(17)); } } else { - c.announce(PacketCreator.partyStatusMessage(16)); + c.sendPacket(PacketCreator.partyStatusMessage(16)); } } else { - c.announce(PacketCreator.partyStatusMessage(19)); + c.sendPacket(PacketCreator.partyStatusMessage(19)); } break; } diff --git a/src/main/java/net/server/channel/handlers/PartySearchStartHandler.java b/src/main/java/net/server/channel/handlers/PartySearchStartHandler.java index f4d21c7c90..eb8c569e22 100644 --- a/src/main/java/net/server/channel/handlers/PartySearchStartHandler.java +++ b/src/main/java/net/server/channel/handlers/PartySearchStartHandler.java @@ -44,19 +44,19 @@ public class PartySearchStartHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); if (min > max) { chr.dropMessage(1, "The min. value is higher than the max!"); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (max - min > 30) { chr.dropMessage(1, "You can only search for party members within a range of 30 levels."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (chr.getLevel() < min || chr.getLevel() > max) { chr.dropMessage(1, "The range of level for search has to include your own level."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } diff --git a/src/main/java/net/server/channel/handlers/PetFoodHandler.java b/src/main/java/net/server/channel/handlers/PetFoodHandler.java index 6d56611372..8f16b27b59 100644 --- a/src/main/java/net/server/channel/handlers/PetFoodHandler.java +++ b/src/main/java/net/server/channel/handlers/PetFoodHandler.java @@ -41,14 +41,14 @@ public final class PetFoodHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); AutobanManager abm = chr.getAutobanManager(); if (abm.getLastSpam(2) + 500 > currentServerTime()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } abm.spam(2); slea.readInt(); // timestamp issue detected thanks to Masterrulax abm.setTimestamp(1, Server.getInstance().getCurrentTimestamp(), 3); if (chr.getNoPets() == 0) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } int previousFullness = 100; diff --git a/src/main/java/net/server/channel/handlers/PetLootHandler.java b/src/main/java/net/server/channel/handlers/PetLootHandler.java index 68494ba459..e3cda96fcb 100644 --- a/src/main/java/net/server/channel/handlers/PetLootHandler.java +++ b/src/main/java/net/server/channel/handlers/PetLootHandler.java @@ -44,7 +44,7 @@ public final class PetLootHandler extends AbstractMaplePacketHandler { int petIndex = chr.getPetIndex(slea.readInt()); MaplePet pet = chr.getPet(petIndex); if (pet == null || !pet.isSummoned()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -55,27 +55,27 @@ public final class PetLootHandler extends AbstractMaplePacketHandler { MapleMapItem mapitem = (MapleMapItem) ob; if (mapitem.getMeso() > 0) { if (!chr.isEquippedMesoMagnet()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (chr.isEquippedPetItemIgnore()) { final Set petIgnore = chr.getExcludedItems(); if(!petIgnore.isEmpty() && petIgnore.contains(Integer.MAX_VALUE)) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } } else { if (!chr.isEquippedItemPouch()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (chr.isEquippedPetItemIgnore()) { final Set petIgnore = chr.getExcludedItems(); if(!petIgnore.isEmpty() && petIgnore.contains(mapitem.getItem().getItemId())) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } @@ -83,7 +83,7 @@ public final class PetLootHandler extends AbstractMaplePacketHandler { chr.pickupItem(ob, petIndex); } catch (NullPointerException | ClassCastException e) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } } diff --git a/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java b/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java index 52fa49abb0..373a23b320 100644 --- a/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java @@ -128,7 +128,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { if (!c.tryacquireClient()) { // thanks GabrielSin for pointing dupes within player interactions - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -138,7 +138,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if (mode == Action.CREATE.getCode()) { if(!chr.isAlive()) { // thanks GabrielSin for pointing this - chr.getClient().announce(PacketCreator.getMiniRoomError(4)); + chr.sendPacket(PacketCreator.getMiniRoomError(4)); return; } @@ -148,7 +148,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { } else if (createType == 1) { // omok mini game int status = establishMiniroomStatus(chr, true); if (status > 0) { - chr.getClient().announce(PacketCreator.getMiniRoomError(status)); + chr.sendPacket(PacketCreator.getMiniRoomError(status)); return; } @@ -168,7 +168,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { type = 0; } if (!chr.haveItem(4080000 + type)) { - chr.getClient().announce(PacketCreator.getMiniRoomError(6)); + chr.sendPacket(PacketCreator.getMiniRoomError(6)); return; } @@ -182,7 +182,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { } else if (createType == 2) { // matchcard int status = establishMiniroomStatus(chr, true); if (status > 0) { - chr.getClient().announce(PacketCreator.getMiniRoomError(status)); + chr.sendPacket(PacketCreator.getMiniRoomError(status)); return; } @@ -202,7 +202,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { type = 0; } if (!chr.haveItem(4080100)) { - chr.getClient().announce(PacketCreator.getMiniRoomError(6)); + chr.sendPacket(PacketCreator.getMiniRoomError(6)); return; } @@ -222,13 +222,13 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { game.sendMatchCard(c, type); } else if (createType == 4 || createType == 5) { // shop if(!GameConstants.isFreeMarketRoom(chr.getMapId())) { - chr.getClient().announce(PacketCreator.getMiniRoomError(15)); + chr.sendPacket(PacketCreator.getMiniRoomError(15)); return; } int status = establishMiniroomStatus(chr, false); if (status > 0) { - chr.getClient().announce(PacketCreator.getMiniRoomError(status)); + chr.sendPacket(PacketCreator.getMiniRoomError(status)); return; } @@ -240,7 +240,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { slea.skip(3); int itemId = slea.readInt(); if (chr.getInventory(MapleInventoryType.CASH).countById(itemId) < 1) { - chr.getClient().announce(PacketCreator.getMiniRoomError(6)); + chr.sendPacket(PacketCreator.getMiniRoomError(6)); return; } @@ -250,13 +250,13 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { chr.getMap().addMapObject(shop); shop.sendShop(c); c.getWorldServer().registerPlayerShop(shop); - //c.announce(PacketCreator.getPlayerShopRemoveVisitor(1)); + //c.sendPacket(PacketCreator.getPlayerShopRemoveVisitor(1)); } else if (ItemConstants.isHiredMerchant(itemId)) { MapleHiredMerchant merchant = new MapleHiredMerchant(chr, desc, itemId); chr.setHiredMerchant(merchant); c.getWorldServer().registerHiredMerchant(merchant); chr.getClient().getChannelServer().addHiredMerchant(chr.getId(), merchant); - chr.announce(PacketCreator.getHiredMerchant(chr, merchant, true)); + chr.sendPacket(PacketCreator.getHiredMerchant(chr, merchant, true)); } } } else if (mode == Action.INVITE.getCode()) { @@ -274,7 +274,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if (!chr.getTrade().isFullTrade() && !chr.getTrade().getPartner().isFullTrade()) { MapleTrade.visitTrade(chr, chr.getTrade().getPartner().getChr()); } else { - chr.getClient().announce(PacketCreator.getMiniRoomError(2)); + chr.sendPacket(PacketCreator.getMiniRoomError(2)); return; } } else { @@ -303,10 +303,10 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { break; } } else { - chr.getClient().announce(PacketCreator.getMiniRoomError(2)); + chr.sendPacket(PacketCreator.getMiniRoomError(2)); } } else { - chr.getClient().announce(PacketCreator.getMiniRoomError(22)); + chr.sendPacket(PacketCreator.getMiniRoomError(22)); } } else if (ob instanceof MapleHiredMerchant && chr.getHiredMerchant() == null) { MapleHiredMerchant merchant = (MapleHiredMerchant) ob; @@ -347,11 +347,11 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { slea.readShort(); int birthday = slea.readInt(); if (!CashOperationHandler.checkBirthday(c, birthday)) { // birthday check here found thanks to lucasziron - c.announce(PacketCreator.serverNotice(1, "Please check again the birthday date.")); + c.sendPacket(PacketCreator.serverNotice(1, "Please check again the birthday date.")); return; } - c.announce(PacketCreator.hiredMerchantOwnerMaintenanceLeave()); + c.sendPacket(PacketCreator.hiredMerchantOwnerMaintenanceLeave()); } if (!canPlaceStore(chr)) { // thanks Ari for noticing player shops overlapping on opening time @@ -453,7 +453,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if (game.isOwner(chr)) { game.broadcastToVisitor(PacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); } else { - game.getOwner().getClient().announce(PacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); + game.getOwner().sendPacket(PacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); } } else if ((game.getCardId(firstslot)) == (game.getCardId(slot))) { if (game.isOwner(chr)) { @@ -480,30 +480,30 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if (targetSlot < 1 || targetSlot > 9) { System.out.println("[Hack] " + chr.getName() + " Trying to dupe on trade slot."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (item == null) { - c.announce(PacketCreator.serverNotice(1, "Invalid item description.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "Invalid item description.")); + c.sendPacket(PacketCreator.enableActions()); return; } if (ii.isUnmerchable(item.getItemId())) { if (ItemConstants.isPet(item.getItemId())) { - c.announce(PacketCreator.serverNotice(1, "Pets are not allowed to be traded.")); + c.sendPacket(PacketCreator.serverNotice(1, "Pets are not allowed to be traded.")); } else { - c.announce(PacketCreator.serverNotice(1, "Cash items are not allowed to be traded.")); + c.sendPacket(PacketCreator.serverNotice(1, "Cash items are not allowed to be traded.")); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if (quantity < 1 || quantity > item.getQuantity()) { - c.announce(PacketCreator.serverNotice(1, "You don't have enough quantity of the item.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "You don't have enough quantity of the item.")); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -512,8 +512,8 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if ((quantity <= item.getQuantity() && quantity >= 0) || ItemConstants.isRechargeable(item.getItemId())) { if (ii.isDropRestricted(item.getItemId())) { // ensure that undroppable items do not make it to the trade window if (!MapleKarmaManipulator.hasKarmaFlag(item)) { - c.announce(PacketCreator.serverNotice(1, "That item is untradeable.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "That item is untradeable.")); + c.sendPacket(PacketCreator.enableActions()); return; } } @@ -523,8 +523,8 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { try { Item checkItem = chr.getInventory(ivType).getItem(pos); if (checkItem != item || checkItem.getPosition() != item.getPosition()) { - c.announce(PacketCreator.serverNotice(1, "Invalid item description.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "Invalid item description.")); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -539,9 +539,9 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if (trade.addItem(tradeItem)) { MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), quantity, true); - trade.getChr().announce(PacketCreator.getTradeItemAdd((byte) 0, tradeItem)); + trade.getChr().sendPacket(PacketCreator.getTradeItemAdd((byte) 0, tradeItem)); if (trade.getPartner() != null) { - trade.getPartner().getChr().announce(PacketCreator.getTradeItemAdd((byte) 1, tradeItem)); + trade.getPartner().getChr().sendPacket(PacketCreator.getTradeItemAdd((byte) 1, tradeItem)); } } } catch (Exception e) { @@ -562,17 +562,17 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { Item ivItem = chr.getInventory(ivType).getItem(slot); if (ivItem == null || ivItem.isUntradeable()) { - c.announce(PacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); + c.sendPacket(PacketCreator.enableActions()); return; } else if (MapleItemInformationProvider.getInstance().isUnmerchable(ivItem.getItemId())) { if (ItemConstants.isPet(ivItem.getItemId())) { - c.announce(PacketCreator.serverNotice(1, "Pets are not allowed to be sold on the Player Store.")); + c.sendPacket(PacketCreator.serverNotice(1, "Pets are not allowed to be sold on the Player Store.")); } else { - c.announce(PacketCreator.serverNotice(1, "Cash items are not allowed to be sold on the Player Store.")); + c.sendPacket(PacketCreator.serverNotice(1, "Cash items are not allowed to be sold on the Player Store.")); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -582,8 +582,8 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { perBundle = 1; bundles = 1; } else if (ivItem.getQuantity() < (bundles * perBundle)) { // thanks GabrielSin for finding a dupe here - c.announce(PacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -604,7 +604,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { MapleHiredMerchant merchant = chr.getHiredMerchant(); if (shop != null && shop.isOwner(chr)) { if (shop.isOpen() || !shop.addItem(shopItem)) { // thanks Vcoc for pointing an exploit with unlimited shop slots - c.announce(PacketCreator.serverNotice(1, "You can't sell it anymore.")); + c.sendPacket(PacketCreator.serverNotice(1, "You can't sell it anymore.")); return; } @@ -614,15 +614,15 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeFromSlot(c, ivType, slot, (short) (bundles * perBundle), true); } - c.announce(PacketCreator.getPlayerShopItemUpdate(shop)); + c.sendPacket(PacketCreator.getPlayerShopItemUpdate(shop)); } else if (merchant != null && merchant.isOwner(chr)) { if (ivType.equals(MapleInventoryType.CASH) && merchant.isPublished()) { - c.announce(PacketCreator.serverNotice(1, "Cash items are only allowed to be sold when first opening the store.")); + c.sendPacket(PacketCreator.serverNotice(1, "Cash items are only allowed to be sold when first opening the store.")); return; } if (merchant.isOpen() || !merchant.addItem(shopItem)) { // thanks Vcoc for pointing an exploit with unlimited shop slots - c.announce(PacketCreator.serverNotice(1, "You can't sell it anymore.")); + c.sendPacket(PacketCreator.serverNotice(1, "You can't sell it anymore.")); return; } @@ -632,7 +632,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeFromSlot(c, ivType, slot, (short) (bundles * perBundle), true); } - c.announce(PacketCreator.updateHiredMerchant(merchant, chr)); + c.sendPacket(PacketCreator.updateHiredMerchant(merchant, chr)); if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) { chr.saveCharToDB(false); @@ -644,7 +644,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { ex.printStackTrace(); } } else { - c.announce(PacketCreator.serverNotice(1, "You can't sell without owning a shop.")); + c.sendPacket(PacketCreator.serverNotice(1, "You can't sell without owning a shop.")); } } else if (mode == Action.REMOVE_ITEM.getCode()) { if (isTradeOpen(chr)) return; @@ -652,7 +652,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { MaplePlayerShop shop = chr.getPlayerShop(); if (shop != null && shop.isOwner(chr)) { if (shop.isOpen()) { - c.announce(PacketCreator.serverNotice(1, "You can't take it with the store open.")); + c.sendPacket(PacketCreator.serverNotice(1, "You can't take it with the store open.")); return; } @@ -682,7 +682,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { merchant.closeOwnerMerchant(chr); return; } - c.announce(PacketCreator.updateHiredMerchant(merchant, chr)); + c.sendPacket(PacketCreator.updateHiredMerchant(merchant, chr)); } else if (mode == Action.BUY.getCode() || mode == Action.MERCHANT_BUY.getCode()) { if (isTradeOpen(chr)) return; @@ -711,7 +711,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { MapleHiredMerchant merchant = chr.getHiredMerchant(); if (merchant != null && merchant.isOwner(chr)) { if (merchant.isOpen()) { - c.announce(PacketCreator.serverNotice(1, "You can't take it with the store open.")); + c.sendPacket(PacketCreator.serverNotice(1, "You can't take it with the store open.")); return; } @@ -749,7 +749,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { } chr.setHiredMerchant(null); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (mode == Action.BAN_PLAYER.getCode()) { slea.skip(1); @@ -764,7 +764,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if(visitor != null) { visitor.closeMiniGame(false); - visitor.announce(PacketCreator.getMiniGameClose(true, 5)); + visitor.sendPacket(PacketCreator.getMiniGameClose(true, 5)); } } } else if (mode == Action.EXIT_AFTER_GAME.getCode()) { @@ -786,7 +786,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { private static boolean isTradeOpen(MapleCharacter chr) { if (chr.getTrade() != null) { // thanks to Rien dev team //Apparently there is a dupe exploit that causes racing conditions when saving/retrieving from the db with stuff like trade open. - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.enableActions()); return true; } @@ -804,11 +804,11 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { MaplePlayerShop shop = mc.getPlayerShop(); if (shop != null && shop.isOwner(mc)) { - chr.announce(PacketCreator.getMiniRoomError(13)); + chr.sendPacket(PacketCreator.getMiniRoomError(13)); return false; } } else { - chr.announce(PacketCreator.getMiniRoomError(13)); + chr.sendPacket(PacketCreator.getMiniRoomError(13)); return false; } } @@ -816,7 +816,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { Point cpos = chr.getPosition(); MaplePortal portal = chr.getMap().findClosestTeleportPortal(cpos); if (portal != null && portal.getPosition().distance(cpos) < 120.0) { - chr.announce(PacketCreator.getMiniRoomError(10)); + chr.sendPacket(PacketCreator.getMiniRoomError(10)); return false; } } catch (Exception e) { diff --git a/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java index a6edc7a3cc..bff68265fd 100644 --- a/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/main/java/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -34,6 +34,7 @@ import net.server.channel.CharacterIdChannelPair; import net.server.coordinator.session.Hwid; import net.server.coordinator.session.SessionCoordinator; import net.server.coordinator.world.MapleEventRecallCoordinator; +import net.server.guild.GuildPackets; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.world.MaplePartyCharacter; @@ -46,7 +47,7 @@ import tools.FilePrinter; import tools.PacketCreator; import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; -import tools.packets.Wedding; +import tools.packets.WeddingPackets; import java.sql.Connection; import java.sql.PreparedStatement; @@ -89,7 +90,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { if (!c.tryacquireClient()) { // thanks MedicOP for assisting on concurrency protection here - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); } try { @@ -176,7 +177,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { if (state == MapleClient.LOGIN_LOGGEDIN) { c.disconnect(true, false); } else { - c.announce(PacketCreator.getAfterLoginError(7)); + c.sendPacket(PacketCreator.getAfterLoginError(7)); } return; @@ -188,7 +189,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { } else { c.setPlayer(null); c.setAccID(0); - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -213,7 +214,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { player.silentApplyDiseases(diseases); } - c.announce(PacketCreator.getCharInfo(player)); + c.sendPacket(PacketCreator.getCharInfo(player)); if (!player.isHidden()) { if (player.isGM() && YamlConfig.config.server.USE_AUTOHIDE_GM) { player.toggleHide(true); @@ -225,10 +226,10 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { // pot bindings being passed through other characters on the account detected thanks to Croosade dev team MapleKeyBinding autohpPot = player.getKeymap().get(91); - player.announce(PacketCreator.sendAutoHpPot(autohpPot != null ? autohpPot.getAction() : 0)); + player.sendPacket(PacketCreator.sendAutoHpPot(autohpPot != null ? autohpPot.getAction() : 0)); MapleKeyBinding autompPot = player.getKeymap().get(92); - player.announce(PacketCreator.sendAutoMpPot(autompPot != null ? autompPot.getAction() : 0)); + player.sendPacket(PacketCreator.sendAutoMpPot(autompPot != null ? autompPot.getAction() : 0)); player.getMap().addPlayer(player); player.visitMap(player.getMap()); @@ -241,9 +242,9 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { ble.setChannel(onlineBuddy.getChannel()); bl.put(ble); } - c.announce(PacketCreator.updateBuddylist(bl.getBuddies())); + c.sendPacket(PacketCreator.updateBuddylist(bl.getBuddies())); - c.announce(PacketCreator.loadFamily(player)); + c.sendPacket(PacketCreator.loadFamily(player)); if (player.getFamilyId() > 0) { MapleFamily f = wserv.getFamily(player.getFamilyId()); if (f != null) { @@ -252,17 +253,17 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { familyEntry.setCharacter(player); player.setFamilyEntry(familyEntry); - c.announce(PacketCreator.getFamilyInfo(familyEntry)); + c.sendPacket(PacketCreator.getFamilyInfo(familyEntry)); familyEntry.announceToSenior(PacketCreator.sendFamilyLoginNotice(player.getName(), true), true); } else { FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + "'s family doesn't have an entry for them. (" + f.getID() + ")"); } } else { FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + " has an invalid family ID. (" + player.getFamilyId() + ")"); - c.announce(PacketCreator.getFamilyInfo(null)); + c.sendPacket(PacketCreator.getFamilyInfo(null)); } } else { - c.announce(PacketCreator.getFamilyInfo(null)); + c.sendPacket(PacketCreator.getFamilyInfo(null)); } if (player.getGuildId() > 0) { @@ -275,7 +276,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { playerGuild.getMGC(player.getId()).setCharacter(player); player.setMGC(playerGuild.getMGC(player.getId())); server.setGuildMemberOnline(player, true, c.getChannel()); - c.announce(PacketCreator.showGuildInfo(player)); + c.sendPacket(GuildPackets.showGuildInfo(player)); int allianceId = player.getGuild().getAllianceId(); if (allianceId > 0) { MapleAlliance newAlliance = server.getAlliance(allianceId); @@ -288,11 +289,11 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { } } if (newAlliance != null) { - c.announce(PacketCreator.updateAllianceInfo(newAlliance, c.getWorld())); - c.announce(PacketCreator.allianceNotice(newAlliance.getId(), newAlliance.getNotice())); + c.sendPacket(GuildPackets.updateAllianceInfo(newAlliance, c.getWorld())); + c.sendPacket(GuildPackets.allianceNotice(newAlliance.getId(), newAlliance.getNotice())); if (newcomer) { - server.allianceMessage(allianceId, PacketCreator.allianceMemberOnline(player, true), player.getId(), -1); + server.allianceMessage(allianceId, GuildPackets.allianceMemberOnline(player, true), player.getId(), -1); } } } @@ -304,7 +305,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { MaplePartyCharacter pchar = player.getMPC(); //Use this in case of enabling party HPbar HUD when logging in, however "you created a party" will appear on chat. - //c.announce(PacketCreator.partyCreated(pchar)); + //c.sendPacket(PacketCreator.partyCreated(pchar)); pchar.setChannel(c.getChannel()); pchar.setMapId(player.getMapId()); @@ -323,16 +324,16 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { eqpInv.unlockInventory(); } - c.announce(PacketCreator.updateBuddylist(player.getBuddylist().getBuddies())); + c.sendPacket(PacketCreator.updateBuddylist(player.getBuddylist().getBuddies())); CharacterNameAndId pendingBuddyRequest = c.getPlayer().getBuddylist().pollPendingRequest(); if (pendingBuddyRequest != null) { - c.announce(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); + c.sendPacket(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); } - c.announce(PacketCreator.updateGender(player)); + c.sendPacket(PacketCreator.updateGender(player)); player.checkMessenger(); - c.announce(PacketCreator.enableReport()); + c.sendPacket(PacketCreator.enableReport()); player.changeSkillLevel(SkillFactory.getSkill(10000000 * player.getJobType() + 12), (byte) (player.getLinkedLevel() / 10), 20, -1); player.checkBerserk(player.isHidden()); @@ -345,14 +346,14 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { MapleMount mount = player.getMount(); // thanks Ari for noticing a scenario where Silver Mane quest couldn't be started if (mount.getItemId() != 0) { - player.announce(PacketCreator.updateMount(player.getId(), mount, false)); + player.sendPacket(PacketCreator.updateMount(player.getId(), mount, false)); } player.reloadQuestExpirations(); /* if (!c.hasVotedAlready()){ - player.announce(PacketCreator.earnTitleMessage("You can vote now! Vote and earn a vote point!")); + player.sendPacket(PacketCreator.earnTitleMessage("You can vote now! Vote and earn a vote point!")); } */ if (player.isGM()) { @@ -362,7 +363,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { if (diseases != null) { for (Entry> e : diseases.entrySet()) { final List> debuff = Collections.singletonList(new Pair<>(e.getKey(), e.getValue().getRight().getX())); - c.announce(PacketCreator.giveDebuff(debuff, e.getValue().getRight())); + c.sendPacket(PacketCreator.giveDebuff(debuff, e.getValue().getRight())); } } } else { @@ -400,8 +401,8 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { final MapleCharacter partner = wserv.getPlayerStorage().getCharacterById(partnerId); if (partner != null && !partner.isAwayFromWorld()) { - player.announce(Wedding.OnNotifyWeddingPartnerTransfer(partnerId, partner.getMapId())); - partner.announce(Wedding.OnNotifyWeddingPartnerTransfer(player.getId(), player.getMapId())); + player.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(partnerId, partner.getMapId())); + partner.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(player.getId(), player.getMapId())); } } @@ -449,7 +450,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { ps2.setInt(1, player.getId()); ps2.executeUpdate(); - c.announce(PacketCreator.sendDueyParcelNotification(rs.getInt("Type") == 1)); + c.sendPacket(PacketCreator.sendDueyParcelNotification(rs.getInt("Type") == 1)); } } } diff --git a/src/main/java/net/server/channel/handlers/PlayerMapTransitionHandler.java b/src/main/java/net/server/channel/handlers/PlayerMapTransitionHandler.java index 4eb702b576..9e1fed873e 100644 --- a/src/main/java/net/server/channel/handlers/PlayerMapTransitionHandler.java +++ b/src/main/java/net/server/channel/handlers/PlayerMapTransitionHandler.java @@ -49,7 +49,7 @@ public final class PlayerMapTransitionHandler extends AbstractMaplePacketHandler chr.cancelBuffStats(MapleBuffStat.HOMING_BEACON); final List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.HOMING_BEACON, 0)); - chr.announce(PacketCreator.giveBuff(1, beaconid, stat)); + chr.sendPacket(PacketCreator.giveBuff(1, beaconid, stat)); } if (!chr.isHidden()) { // thanks Lame (Conrad) for noticing hidden characters controlling mobs @@ -57,7 +57,7 @@ public final class PlayerMapTransitionHandler extends AbstractMaplePacketHandler MapleMonster m = (MapleMonster) mo; if (m.getSpawnEffect() == 0 || m.getHp() < m.getMaxHp()) { // avoid effect-spawning mobs if (m.getController() == chr) { - c.announce(PacketCreator.stopControllingMonster(m.getObjectId())); + c.sendPacket(PacketCreator.stopControllingMonster(m.getObjectId())); m.sendDestroyData(c); m.aggroRemoveController(); } else { diff --git a/src/main/java/net/server/channel/handlers/RPSActionHandler.java b/src/main/java/net/server/channel/handlers/RPSActionHandler.java index b185d7ca1f..8ff86854a6 100644 --- a/src/main/java/net/server/channel/handlers/RPSActionHandler.java +++ b/src/main/java/net/server/channel/handlers/RPSActionHandler.java @@ -37,29 +37,29 @@ public final class RPSActionHandler extends AbstractMaplePacketHandler{ if(chr.getMeso() >= 1000){ chr.setRPS(new MapleRockPaperScissor(c, mode)); }else{ - c.announce(PacketCreator.rpsMesoError(-1)); + c.sendPacket(PacketCreator.rpsMesoError(-1)); } break; case 1: // answer if(rps == null || !rps.answer(c, slea.readByte())){ - c.announce(PacketCreator.rpsMode((byte) 0x0D));// 13 + c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));// 13 } break; case 2: // time over if(rps == null || !rps.timeOut(c)){ - c.announce(PacketCreator.rpsMode((byte) 0x0D)); + c.sendPacket(PacketCreator.rpsMode((byte) 0x0D)); } break; case 3: // continue if(rps == null || !rps.nextRound(c)){ - c.announce(PacketCreator.rpsMode((byte) 0x0D)); + c.sendPacket(PacketCreator.rpsMode((byte) 0x0D)); } break; case 4: // leave if(rps != null){ rps.dispose(c); }else{ - c.announce(PacketCreator.rpsMode((byte) 0x0D)); + c.sendPacket(PacketCreator.rpsMode((byte) 0x0D)); } break; } diff --git a/src/main/java/net/server/channel/handlers/RaiseIncExpHandler.java b/src/main/java/net/server/channel/handlers/RaiseIncExpHandler.java index 21336fb4b1..aaf4f237dd 100644 --- a/src/main/java/net/server/channel/handlers/RaiseIncExpHandler.java +++ b/src/main/java/net/server/channel/handlers/RaiseIncExpHandler.java @@ -42,7 +42,7 @@ public class RaiseIncExpHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber); if (!chr.getQuest(quest).getStatus().equals(MapleQuestStatus.Status.STARTED)) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -64,7 +64,7 @@ public class RaiseIncExpHandler extends AbstractMaplePacketHandler { int nextValue = Math.min(consumables.get(consId) + c.getAbstractPlayerInteraction().getQuestProgressInt(questid, infoNumber), consItem.exp * consItem.grade); c.getAbstractPlayerInteraction().setQuestProgress(questid, infoNumber, nextValue); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } finally { c.releaseClient(); } diff --git a/src/main/java/net/server/channel/handlers/RangedAttackHandler.java b/src/main/java/net/server/channel/handlers/RangedAttackHandler.java index 7b758a0dd4..b61c193f16 100644 --- a/src/main/java/net/server/channel/handlers/RangedAttackHandler.java +++ b/src/main/java/net/server/channel/handlers/RangedAttackHandler.java @@ -31,6 +31,7 @@ import config.YamlConfig; import constants.game.GameConstants; import constants.inventory.ItemConstants; import constants.skills.*; +import net.packet.Packet; import server.MapleItemInformationProvider; import server.MapleStatEffect; import tools.PacketCreator; @@ -62,7 +63,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler { if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK); - c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); + c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } if (attack.skill == Buccaneer.ENERGY_ORB || attack.skill == ThunderBreaker.SPARK || attack.skill == Shadower.TAUNT || attack.skill == NightLord.TAUNT) { @@ -101,7 +102,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler { effect = attack.getAttackEffect(chr, null); bulletCount = effect.getBulletCount(); if (effect.getCooldown() > 0) { - c.announce(PacketCreator.skillCooldown(attack.skill, effect.getCooldown())); + c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect.getCooldown())); } if(attack.skill == 4111004) { // shadow meso @@ -187,7 +188,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler { visProjectile = 0; } - byte[] packet; + final Packet packet; switch (attack.skill) { case 3121004: // Hurricane case 3221001: // Pierce @@ -208,7 +209,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler { if (chr.skillIsCooling(attack.skill)) { return; } else { - c.announce(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); + c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000); } } diff --git a/src/main/java/net/server/channel/handlers/RemoteStoreHandler.java b/src/main/java/net/server/channel/handlers/RemoteStoreHandler.java index 0447680ffa..bda4500775 100644 --- a/src/main/java/net/server/channel/handlers/RemoteStoreHandler.java +++ b/src/main/java/net/server/channel/handlers/RemoteStoreHandler.java @@ -42,13 +42,13 @@ public class RemoteStoreHandler extends AbstractMaplePacketHandler { if (hm.getChannel() == chr.getClient().getChannel()) { hm.visitShop(chr); } else { - c.announce(PacketCreator.remoteChannelChange((byte) (hm.getChannel() - 1))); + c.sendPacket(PacketCreator.remoteChannelChange((byte) (hm.getChannel() - 1))); } return; } else { chr.dropMessage(1, "You don't have a Merchant open."); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } private static MapleHiredMerchant getMerchant(MapleClient c) { diff --git a/src/main/java/net/server/channel/handlers/ReportHandler.java b/src/main/java/net/server/channel/handlers/ReportHandler.java index 219ee9e9d8..3d4a1635c4 100644 --- a/src/main/java/net/server/channel/handlers/ReportHandler.java +++ b/src/main/java/net/server/channel/handlers/ReportHandler.java @@ -51,11 +51,11 @@ public final class ReportHandler extends AbstractMaplePacketHandler { c.getPlayer().decreaseReports(); c.getPlayer().gainMeso(-300, true); } else { - c.announce(PacketCreator.reportResponse((byte) 4)); + c.sendPacket(PacketCreator.reportResponse((byte) 4)); return; } } else { - c.announce(PacketCreator.reportResponse((byte) 2)); + c.sendPacket(PacketCreator.reportResponse((byte) 2)); return; } Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(6, victim + " was reported for: " + description)); @@ -70,7 +70,7 @@ public final class ReportHandler extends AbstractMaplePacketHandler { c.getPlayer().decreaseReports(); c.getPlayer().gainMeso(-300, true); } else { - c.announce(PacketCreator.reportResponse((byte) 4)); + c.sendPacket(PacketCreator.reportResponse((byte) 4)); return; } } diff --git a/src/main/java/net/server/channel/handlers/RingActionHandler.java b/src/main/java/net/server/channel/handlers/RingActionHandler.java index 0d5bcbeaa8..f2e9a5d0ef 100644 --- a/src/main/java/net/server/channel/handlers/RingActionHandler.java +++ b/src/main/java/net/server/channel/handlers/RingActionHandler.java @@ -38,7 +38,7 @@ import tools.DatabaseConnection; import tools.PacketCreator; import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; -import tools.packets.Wedding; +import tools.packets.WeddingPackets; import java.sql.Connection; import java.sql.PreparedStatement; @@ -63,71 +63,71 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { // TODO: get the correct packet bytes for these popups if (source.isMarried()) { source.dropMessage(1, "You're already married!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (source.getPartnerId() > 0) { source.dropMessage(1, "You're already engaged!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (source.getMarriageItemId() > 0) { source.dropMessage(1, "You're already engaging someone!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (target == null) { source.dropMessage(1, "Unable to find " + name + " on this channel."); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (target == source) { source.dropMessage(1, "You can't engage yourself."); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if(target.getLevel() < 50) { source.dropMessage(1, "You can only propose to someone level 50 or higher."); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if(source.getLevel() < 50) { source.dropMessage(1, "You can only propose being level 50 or higher."); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (!target.getMap().equals(source.getMap())) { source.dropMessage(1, "Make sure your partner is on the same map!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (!source.haveItem(itemid) || itemid < 2240000 || itemid > 2240015) { - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (target.isMarried()) { source.dropMessage(1, "The player is already married!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (target.getPartnerId() > 0 || target.getMarriageItemId() > 0) { source.dropMessage(1, "The player is already engaged!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (target.haveWeddingRing()) { source.dropMessage(1, "The player already holds a marriage ring..."); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (source.haveWeddingRing()) { source.dropMessage(1, "You can't propose while holding a marriage ring!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (target.getGender() == source.getGender()) { source.dropMessage(1, "You may only propose to a " + (source.getGender() == 1 ? "male" : "female") + "!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (!MapleInventoryManipulator.checkSpace(c, newBoxId, 1, "")) { source.dropMessage(5, "You don't have a ETC slot available right now!"); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } else if (!MapleInventoryManipulator.checkSpace(target.getClient(), newBoxId + 1, 1, "")) { source.dropMessage(5, "The girl you proposed doesn't have a ETC slot available right now."); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); return; } source.setMarriageItemId(itemid); - target.announce(Wedding.OnMarriageRequest(source.getName(), source.getId())); + target.sendPacket(WeddingPackets.onMarriageRequest(source.getName(), source.getId())); } private static void eraseEngagementOffline(int characterId) { @@ -184,8 +184,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { } else { partner.dropMessage(5, chr.getName() + " has decided to break up the marriage."); - //partner.announce(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc? - partner.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0)); + //partner.sendPacket(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc? + partner.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0)); resetRingId(partner); partner.setPartnerId(-1); partner.setMarriageItemId(-1); @@ -194,8 +194,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { chr.dropMessage(5, "You have successfully break the marriage with " + MapleCharacter.getNameById(partnerid) + "."); - //chr.announce(Wedding.OnMarriageResult((byte) 0)); - chr.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0)); + //chr.sendPacket(Wedding.OnMarriageResult((byte) 0)); + chr.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0)); resetRingId(chr); chr.setPartnerId(-1); chr.setMarriageItemId(-1); @@ -233,8 +233,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeById(partner.getClient(), MapleInventoryType.ETC, partnerMarriageitemid, (short) 1, false, false); } - //partner.announce(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc? - partner.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0)); + //partner.sendPacket(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc? + partner.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0)); partner.setPartnerId(-1); partner.setMarriageItemId(-1); } @@ -244,8 +244,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { } chr.dropMessage(5, "You have successfully break the engagement with " + MapleCharacter.getNameById(partnerid) + "."); - //chr.announce(Wedding.OnMarriageResult((byte) 0)); - chr.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0)); + //chr.sendPacket(Wedding.OnMarriageResult((byte) 0)); + chr.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0)); chr.setPartnerId(-1); chr.setMarriageItemId(-1); } @@ -315,20 +315,20 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { final MapleCharacter target = c.getPlayer(); if (source == null) { - target.announce(PacketCreator.enableActions()); + target.sendPacket(PacketCreator.enableActions()); return; } final int itemid = source.getMarriageItemId(); if (target.getPartnerId() > 0 || source.getId() != id || itemid <= 0 || !source.haveItem(itemid) || source.getPartnerId() > 0 || !source.isAlive() || !target.isAlive()) { - target.announce(PacketCreator.enableActions()); + target.sendPacket(PacketCreator.enableActions()); return; } if (accepted) { final int newItemId = getBoxId(itemid); if (!MapleInventoryManipulator.checkSpace(c, newItemId, 1, "") || !MapleInventoryManipulator.checkSpace(source.getClient(), newItemId, 1, "")) { - target.announce(PacketCreator.enableActions()); + target.sendPacket(PacketCreator.enableActions()); return; } @@ -345,17 +345,17 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.addById(source.getClient(), newItemId, (short) 1); MapleInventoryManipulator.addById(c, (newItemId + 1), (short) 1); - source.announce(Wedding.OnMarriageResult(marriageId, source, false)); - target.announce(Wedding.OnMarriageResult(marriageId, source, false)); + source.sendPacket(WeddingPackets.OnMarriageResult(marriageId, source, false)); + target.sendPacket(WeddingPackets.OnMarriageResult(marriageId, source, false)); - source.announce(Wedding.OnNotifyWeddingPartnerTransfer(target.getId(), target.getMapId())); - target.announce(Wedding.OnNotifyWeddingPartnerTransfer(source.getId(), source.getMapId())); + source.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(target.getId(), target.getMapId())); + target.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(source.getId(), source.getMapId())); } catch (Exception e) { System.out.println("Error with engagement " + e.getMessage()); } } else { source.dropMessage(1, "She has politely declined your engagement request."); - source.announce(Wedding.OnMarriageResult((byte) 0)); + source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0)); source.setMarriageItemId(-1); } @@ -374,12 +374,12 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { try { itemId = c.getPlayer().getInventory(MapleInventoryType.ETC).getItem(slot).getItemId(); } catch(NullPointerException npe) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } if((itemId != 4031377 && itemId != 4031395) || !c.getPlayer().haveItem(itemId)) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -444,7 +444,7 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { if(invitationid == 4031406 || invitationid == 4031407) { Item item = c.getPlayer().getInventory(MapleInventoryType.ETC).getItem(slot); if(item == null || item.getItemId() != invitationid) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -452,7 +452,7 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { Pair coupleId = c.getWorldServer().getWeddingCoupleForGuest(c.getPlayer().getId(), invitationid == 4031407); if (coupleId != null) { int groomId = coupleId.getLeft(), brideId = coupleId.getRight(); - c.announce(Wedding.sendWeddingInvitation(MapleCharacter.getNameById(groomId), MapleCharacter.getNameById(brideId))); + c.sendPacket(WeddingPackets.sendWeddingInvitation(MapleCharacter.getNameById(groomId), MapleCharacter.getNameById(brideId))); } } @@ -502,6 +502,6 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { break; } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/ScrollHandler.java b/src/main/java/net/server/channel/handlers/ScrollHandler.java index a22d413c5e..2bb16041ad 100644 --- a/src/main/java/net/server/channel/handlers/ScrollHandler.java +++ b/src/main/java/net/server/channel/handlers/ScrollHandler.java @@ -171,7 +171,7 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { mods.add(new ModifyInventory(3, scrolled)); mods.add(new ModifyInventory(0, scrolled)); } - c.announce(PacketCreator.modifyInventory(true, mods)); + c.sendPacket(PacketCreator.modifyInventory(true, mods)); chr.getMap().broadcastMessage(PacketCreator.getScrollEffect(chr.getId(), scrollSuccess, legendarySpirit, whiteScroll)); if (dst < 0 && (scrollSuccess == Equip.ScrollResult.SUCCESS || scrollSuccess == Equip.ScrollResult.CURSE)) { chr.equipChanged(); @@ -184,9 +184,9 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { private static void announceCannotScroll(MapleClient c, boolean legendarySpirit) { if (legendarySpirit) { - c.announce(PacketCreator.getScrollEffect(c.getPlayer().getId(), Equip.ScrollResult.FAIL, false, false)); + c.sendPacket(PacketCreator.getScrollEffect(c.getPlayer().getId(), Equip.ScrollResult.FAIL, false, false)); } else { - c.announce(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); } } diff --git a/src/main/java/net/server/channel/handlers/SkillBookHandler.java b/src/main/java/net/server/channel/handlers/SkillBookHandler.java index 5a4774cc9d..37bee76147 100644 --- a/src/main/java/net/server/channel/handlers/SkillBookHandler.java +++ b/src/main/java/net/server/channel/handlers/SkillBookHandler.java @@ -40,7 +40,7 @@ public final class SkillBookHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { if (!c.getPlayer().isAlive()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } diff --git a/src/main/java/net/server/channel/handlers/SpecialMoveHandler.java b/src/main/java/net/server/channel/handlers/SpecialMoveHandler.java index 2b96e283ed..93935599b6 100644 --- a/src/main/java/net/server/channel/handlers/SpecialMoveHandler.java +++ b/src/main/java/net/server/channel/handlers/SpecialMoveHandler.java @@ -64,8 +64,8 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler { } skillLevel = 1; chr.setDojoEnergy(0); - c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); - c.announce(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset.")); + c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); + c.sendPacket(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset.")); } if (skillLevel == 0 || skillLevel != __skillLevel) return; @@ -79,7 +79,7 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler { cooldownTime /= 60; } - c.announce(PacketCreator.skillCooldown(skillid, cooldownTime)); + c.sendPacket(PacketCreator.skillCooldown(skillid, cooldownTime)); chr.addCooldown(skillid, currentServerTime(), cooldownTime * 1000); } } @@ -102,8 +102,8 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler { } } byte direction = slea.readByte(); // thanks MedicOP for pointing some 3rd-party related issues with Magnet - chr.getMap().broadcastMessage(chr, PacketCreator.showBuffeffect(chr.getId(), skillid, chr.getSkillLevel(skillid), 1, direction), false); - c.announce(PacketCreator.enableActions()); + chr.getMap().broadcastMessage(chr, PacketCreator.showBuffEffect(chr.getId(), skillid, chr.getSkillLevel(skillid), 1, direction), false); + c.sendPacket(PacketCreator.enableActions()); return; } else if (skillid == Brawler.MP_RECOVERY) {// MP Recovery Skill s = SkillFactory.getSkill(skillid); @@ -114,7 +114,7 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler { chr.addMP(gain); } else if (skillid == SuperGM.HEAL_PLUS_DISPEL) { slea.skip(11); - chr.getMap().broadcastMessage(chr, PacketCreator.showBuffeffect(chr.getId(), skillid, chr.getSkillLevel(skillid)), false); + chr.getMap().broadcastMessage(chr, PacketCreator.showBuffEffect(chr.getId(), skillid, chr.getSkillLevel(skillid)), false); } else if (skillid % 10000000 == 1004) { slea.readShort(); } @@ -143,10 +143,10 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler { } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/SpouseChatHandler.java b/src/main/java/net/server/channel/handlers/SpouseChatHandler.java index 6da509343d..9c0f142d82 100644 --- a/src/main/java/net/server/channel/handlers/SpouseChatHandler.java +++ b/src/main/java/net/server/channel/handlers/SpouseChatHandler.java @@ -39,8 +39,8 @@ public final class SpouseChatHandler extends AbstractMaplePacketHandler { if (partnerId > 0) { // yay marriage MapleCharacter spouse = c.getWorldServer().getPlayerStorage().getCharacterById(partnerId); if (spouse != null) { - spouse.announce(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true)); - c.announce(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true)); + spouse.sendPacket(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true)); + c.sendPacket(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true)); if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Spouse", msg); } diff --git a/src/main/java/net/server/channel/handlers/TakeDamageHandler.java b/src/main/java/net/server/channel/handlers/TakeDamageHandler.java index 8e59aace0e..6acda7e7e0 100644 --- a/src/main/java/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/TakeDamageHandler.java @@ -169,8 +169,8 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { } map.damageMonster(chr, attacker, bouncedamage); map.broadcastMessage(chr, PacketCreator.damageMonster(oid, bouncedamage), true); - chr.getClient().announce(PacketCreator.showOwnBuffEffect(id, 5)); - map.broadcastMessage(chr, PacketCreator.showBuffeffect(chr.getId(), id, 5), false); + chr.sendPacket(PacketCreator.showOwnBuffEffect(id, 5)); + map.broadcastMessage(chr, PacketCreator.showBuffEffect(chr.getId(), id, 5), false); } } } @@ -274,7 +274,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { } if (GameConstants.isDojo(map.getId())) { chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_DMG); - c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); + c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } for (MapleCharacter player : banishPlayers) { // chill, if this list ever gets non-empty an attacker does exist, trust me :) diff --git a/src/main/java/net/server/channel/handlers/TouchingCashShopHandler.java b/src/main/java/net/server/channel/handlers/TouchingCashShopHandler.java index c6613ceeb7..5679254814 100644 --- a/src/main/java/net/server/channel/handlers/TouchingCashShopHandler.java +++ b/src/main/java/net/server/channel/handlers/TouchingCashShopHandler.java @@ -33,6 +33,6 @@ import tools.data.input.SeekableLittleEndianAccessor; public final class TouchingCashShopHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - c.announce(PacketCreator.showCash(c.getPlayer())); + c.sendPacket(PacketCreator.showCash(c.getPlayer())); } } diff --git a/src/main/java/net/server/channel/handlers/TransferNameHandler.java b/src/main/java/net/server/channel/handlers/TransferNameHandler.java index 89f38629c5..6aebf3b4a7 100644 --- a/src/main/java/net/server/channel/handlers/TransferNameHandler.java +++ b/src/main/java/net/server/channel/handlers/TransferNameHandler.java @@ -43,20 +43,20 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler { slea.readInt(); //cid int birthday = slea.readInt(); if (!CashOperationHandler.checkBirthday(c, birthday)) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC4)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4)); + c.sendPacket(PacketCreator.enableActions()); return; } if(!YamlConfig.config.server.ALLOW_CASHSHOP_NAME_CHANGE) { - c.announce(PacketCreator.sendNameTransferRules(4)); + c.sendPacket(PacketCreator.sendNameTransferRules(4)); return; } MapleCharacter chr = c.getPlayer(); if(chr.getLevel() < 10) { - c.announce(PacketCreator.sendNameTransferRules(4)); + c.sendPacket(PacketCreator.sendNameTransferRules(4)); return; } else if(c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30*24*60*60*1000) < Calendar.getInstance().getTimeInMillis()) { - c.announce(PacketCreator.sendNameTransferRules(2)); + c.sendPacket(PacketCreator.sendNameTransferRules(2)); return; } //sql queries @@ -67,10 +67,10 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler { while(rs.next()) { Timestamp completedTimestamp = rs.getTimestamp("completionTime"); if(completedTimestamp == null) { //has pending name request - c.announce(PacketCreator.sendNameTransferRules(1)); + c.sendPacket(PacketCreator.sendNameTransferRules(1)); return; } else if(completedTimestamp.getTime() + YamlConfig.config.server.NAME_CHANGE_COOLDOWN > System.currentTimeMillis()) { - c.announce(PacketCreator.sendNameTransferRules(3)); + c.sendPacket(PacketCreator.sendNameTransferRules(3)); return; } } @@ -78,6 +78,6 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler { e.printStackTrace(); return; } - c.announce(PacketCreator.sendNameTransferRules(0)); + c.sendPacket(PacketCreator.sendNameTransferRules(0)); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/TransferNameResultHandler.java b/src/main/java/net/server/channel/handlers/TransferNameResultHandler.java index 647a043541..fbe86a1f68 100644 --- a/src/main/java/net/server/channel/handlers/TransferNameResultHandler.java +++ b/src/main/java/net/server/channel/handlers/TransferNameResultHandler.java @@ -35,6 +35,6 @@ public final class TransferNameResultHandler extends AbstractMaplePacketHandler @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { String name = slea.readMapleAsciiString(); - c.announce(PacketCreator.sendNameTransferCheck(name, MapleCharacter.canCreateChar(name))); + c.sendPacket(PacketCreator.sendNameTransferCheck(name, MapleCharacter.canCreateChar(name))); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/TransferWorldHandler.java b/src/main/java/net/server/channel/handlers/TransferWorldHandler.java index b2fbc14c7a..6dcee7e311 100644 --- a/src/main/java/net/server/channel/handlers/TransferWorldHandler.java +++ b/src/main/java/net/server/channel/handlers/TransferWorldHandler.java @@ -43,18 +43,18 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler { slea.readInt(); //cid int birthday = slea.readInt(); if (!CashOperationHandler.checkBirthday(c, birthday)) { - c.announce(PacketCreator.showCashShopMessage((byte) 0xC4)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4)); + c.sendPacket(PacketCreator.enableActions()); return; } MapleCharacter chr = c.getPlayer(); if(!YamlConfig.config.server.ALLOW_CASHSHOP_WORLD_TRANSFER || Server.getInstance().getWorldsSize() <= 1) { - c.announce(PacketCreator.sendWorldTransferRules(9, c)); + c.sendPacket(PacketCreator.sendWorldTransferRules(9, c)); return; } int worldTransferError = chr.checkWorldTransferEligibility(); if(worldTransferError != 0) { - c.announce(PacketCreator.sendWorldTransferRules(worldTransferError, c)); + c.sendPacket(PacketCreator.sendWorldTransferRules(worldTransferError, c)); return; } try (Connection con = DatabaseConnection.getConnection(); @@ -64,10 +64,10 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler { while(rs.next()) { Timestamp completedTimestamp = rs.getTimestamp("completionTime"); if(completedTimestamp == null) { //has pending world transfer - c.announce(PacketCreator.sendWorldTransferRules(6, c)); + c.sendPacket(PacketCreator.sendWorldTransferRules(6, c)); return; } else if(completedTimestamp.getTime() + YamlConfig.config.server.WORLD_TRANSFER_COOLDOWN > System.currentTimeMillis()) { - c.announce(PacketCreator.sendWorldTransferRules(7, c)); + c.sendPacket(PacketCreator.sendWorldTransferRules(7, c)); return; } } @@ -75,6 +75,6 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler { e.printStackTrace(); return; } - c.announce(PacketCreator.sendWorldTransferRules(0, c)); + c.sendPacket(PacketCreator.sendWorldTransferRules(0, c)); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/TrockAddMapHandler.java b/src/main/java/net/server/channel/handlers/TrockAddMapHandler.java index 0011af7535..a261a0f41e 100644 --- a/src/main/java/net/server/channel/handlers/TrockAddMapHandler.java +++ b/src/main/java/net/server/channel/handlers/TrockAddMapHandler.java @@ -45,7 +45,7 @@ public final class TrockAddMapHandler extends AbstractMaplePacketHandler { chr.deleteFromVipTrocks(mapId); else chr.deleteFromTrocks(mapId); - c.announce(PacketCreator.trockRefreshMapList(chr, true, vip)); + c.sendPacket(PacketCreator.trockRefreshMapList(chr, true, vip)); } else if (type == 0x01) { if (!FieldLimit.CANNOTVIPROCK.check(chr.getMap().getFieldLimit())) { if (vip) @@ -53,7 +53,7 @@ public final class TrockAddMapHandler extends AbstractMaplePacketHandler { else chr.addTrockMap(); - c.announce(PacketCreator.trockRefreshMapList(chr, false, vip)); + c.sendPacket(PacketCreator.trockRefreshMapList(chr, false, vip)); } else { chr.message("You may not save this map."); } diff --git a/src/main/java/net/server/channel/handlers/UseCashItemHandler.java b/src/main/java/net/server/channel/handlers/UseCashItemHandler.java index 3bc6beff29..de4ef33990 100644 --- a/src/main/java/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/main/java/net/server/channel/handlers/UseCashItemHandler.java @@ -54,44 +54,44 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { final MapleCharacter player = c.getPlayer(); - + long timeNow = currentServerTime(); if (timeNow - player.getLastUsedCashItem() < 3000) { player.dropMessage(1, "You have used a cash item recently. Wait a moment, then try again."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } player.setLastUsedCashItem(timeNow); - + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); short position = slea.readShort(); int itemId = slea.readInt(); int itemType = itemId / 10000; - + MapleInventory cashInv = player.getInventory(MapleInventoryType.CASH); Item toUse = cashInv.getItem(position); if (toUse == null || toUse.getItemId() != itemId) { toUse = cashInv.findById(itemId); - + if (toUse == null) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } - + position = toUse.getPosition(); } - + if (toUse.getQuantity() < 1) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } - + String medal = ""; Item medalItem = player.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -49); if (medalItem != null) { medal = "<" + ii.getName(medalItem.getItemId()) + "> "; } - + if (itemType == 504) { // vip teleport rock String error1 = "Either the player could not be found or you were trying to teleport to an illegal location."; boolean vip = slea.readByte() == 1 && itemId / 1000 >= 5041; @@ -113,7 +113,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { } else { String name = slea.readMapleAsciiString(); MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(name); - + if (victim != null) { MapleMap targetMap = victim.getMap(); if (!FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) && (targetMap.getForcedReturnId() == 999999999 || targetMap.getId() < 100000000)) { @@ -130,23 +130,23 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { player.dropMessage(1, "Player could not be found in this channel."); } } - + if (!success) { MapleInventoryManipulator.addById(c, itemId, (short) 1); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } else if (itemType == 505) { // AP/SP reset - if(!player.isAlive()) { - c.announce(PacketCreator.enableActions()); + if (!player.isAlive()) { + c.sendPacket(PacketCreator.enableActions()); return; } - + if (itemId > 5050000) { int SPTo = slea.readInt(); if (!AssignSPProcessor.canSPAssign(c, SPTo)) { // exploit found thanks to Arnah return; } - + int SPFrom = slea.readInt(); Skill skillSPTo = SkillFactory.getSkill(SPTo); Skill skillSPFrom = SkillFactory.getSkill(SPFrom); @@ -155,39 +155,43 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { if ((curLevel < skillSPTo.getMaxLevel()) && curLevelSPFrom > 0) { player.changeSkillLevel(skillSPFrom, (byte) (curLevelSPFrom - 1), player.getMasterLevel(skillSPFrom), -1); player.changeSkillLevel(skillSPTo, (byte) (curLevel + 1), player.getMasterLevel(skillSPTo), -1); - + // update macros, thanks to Arnah - if((curLevelSPFrom - 1) == 0){ + if ((curLevelSPFrom - 1) == 0) { boolean updated = false; - for(SkillMacro macro : player.getMacros()){ - if(macro == null) continue; - + for (SkillMacro macro : player.getMacros()) { + if (macro == null) { + continue; + } + boolean update = false;// cleaner? - if(macro.getSkill1() == SPFrom){ + if (macro.getSkill1() == SPFrom) { update = true; macro.setSkill1(0); } - if(macro.getSkill2() == SPFrom){ + if (macro.getSkill2() == SPFrom) { update = true; macro.setSkill2(0); } - if(macro.getSkill3() == SPFrom){ + if (macro.getSkill3() == SPFrom) { update = true; macro.setSkill3(0); } - if(update){ + if (update) { updated = true; player.updateMacros(macro.getPosition(), macro); } } - if(updated) player.sendMacros(); + if (updated) { + player.sendMacros(); + } } } } else { int APTo = slea.readInt(); int APFrom = slea.readInt(); - - if(!AssignAPProcessor.APResetAction(c, APFrom, APTo)) { + + if (!AssignAPProcessor.APResetAction(c, APFrom, APTo)) { return; } } @@ -292,16 +296,16 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { messages.add(message); } slea.readInt(); - + if (!MapleTVEffect.broadcastMapleTVIfNotActive(player, victim, messages, tvType)) { player.dropMessage(1, "MapleTV is already in use."); return; } - + if (megassenger) { - Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.serverNotice(3, c.getChannel(), medal + player.getName() + " : " + builder.toString(), ear)); + Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.serverNotice(3, c.getChannel(), medal + player.getName() + " : " + builder, ear)); } - + break; case 6: //item megaphone String msg = medal + player.getName() + " : " + slea.readMapleAsciiString(); @@ -313,7 +317,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { { return; } - + // thanks Conrad for noticing that untradeable items should be allowed in megas } Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.itemMegaphone(msg, whisper, c.getChannel(), item)); @@ -335,12 +339,12 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { remove(c, position, itemId); } else if (itemType == 508) { // thanks tmskdl12 for graduation banner; thanks ratency for first pointing lack of Kite handling MapleKite kite = new MapleKite(player, slea.readMapleAsciiString(), itemId); - + if (!GameConstants.isFreeMarketRoom(player.getMapId())) { player.getMap().spawnKite(kite); remove(c, position, itemId); } else { - c.announce(PacketCreator.sendCannotSpawnKite()); + c.sendPacket(PacketCreator.sendCannotSpawnKite()); } } else if (itemType == 509) { String sendTo = slea.readMapleAsciiString(); @@ -365,41 +369,46 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { } else if (itemType == 517) { MaplePet pet = player.getPet(0); if (pet == null) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } String newName = slea.readMapleAsciiString(); pet.setName(newName); pet.saveToDb(); - + Item item = player.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition()); - if (item != null) + if (item != null) { player.forceUpdateItem(item); - + } + player.getMap().broadcastMessage(player, PacketCreator.changePetName(player, newName, 1), true); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); remove(c, position, itemId); } else if (itemType == 520) { player.gainMeso(ii.getMeso(itemId), true, false, true); remove(c, position, itemId); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (itemType == 523) { int itemid = slea.readInt(); - - if(!YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) c.getWorldServer().addOwlItemSearch(itemid); + + if (!YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) { + c.getWorldServer().addOwlItemSearch(itemid); + } player.setOwlSearch(itemid); List> hmsAvailable = c.getWorldServer().getAvailableItemBundles(itemid); - if(!hmsAvailable.isEmpty()) remove(c, position, itemId); - - c.announce(PacketCreator.owlOfMinerva(c, itemid, hmsAvailable)); - c.announce(PacketCreator.enableActions()); - + if (!hmsAvailable.isEmpty()) { + remove(c, position, itemId); + } + + c.sendPacket(PacketCreator.owlOfMinerva(c, itemid, hmsAvailable)); + c.sendPacket(PacketCreator.enableActions()); + } else if (itemType == 524) { for (byte i = 0; i < 3; i++) { MaplePet pet = player.getPet(i); if (pet != null) { Pair p = pet.canConsume(itemId); - + if (p.getRight()) { pet.gainClosenessFullness(player, p.getLeft(), 100, 1); remove(c, position, itemId); @@ -409,7 +418,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { break; } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (itemType == 530) { ii.getItemEffect(itemId).applyTo(player); remove(c, position, itemId); @@ -418,20 +427,20 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { } else if (itemType == 537) { if (GameConstants.isFreeMarketRoom(player.getMapId())) { player.dropMessage(5, "You cannot use the chalkboard here."); - player.getClient().announce(PacketCreator.enableActions()); + player.sendPacket(PacketCreator.enableActions()); return; } - + player.setChalkboard(slea.readMapleAsciiString()); player.getMap().broadcastMessage(PacketCreator.useChalkboard(player, false)); - player.getClient().announce(PacketCreator.enableActions()); + player.sendPacket(PacketCreator.enableActions()); //remove(c, position, itemId); thanks Conrad for noticing chalkboards shouldn't be depleted upon use } else if (itemType == 539) { List strLines = new LinkedList<>(); for (int i = 0; i < 4; i++) { strLines.add(slea.readMapleAsciiString()); } - + final int world = c.getWorld(); Server.getInstance().broadcastMessage(world, PacketCreator.getAvatarMega(player, medal, c.getChannel(), itemId, strLines, (slea.readByte() != 0))); TimerManager.getInstance().schedule(() -> Server.getInstance().broadcastMessage(world, PacketCreator.byeAvatarMega()), 1000 * 10); @@ -439,20 +448,20 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { } else if (itemType == 540) { slea.readByte(); slea.readInt(); - if(itemId == 5400000) { //name change - c.announce(PacketCreator.showNameChangeCancel(player.cancelPendingNameChange())); - } else if(itemId == 5401000) { //world transfer - c.announce(PacketCreator.showWorldTransferCancel(player.cancelPendingWorldTranfer())); + if (itemId == 5400000) { //name change + c.sendPacket(PacketCreator.showNameChangeCancel(player.cancelPendingNameChange())); + } else if (itemId == 5401000) { //world transfer + c.sendPacket(PacketCreator.showWorldTransferCancel(player.cancelPendingWorldTranfer())); } remove(c, position, itemId); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (itemType == 543) { - if(itemId == 5432000 && !c.gainCharacterSlot()) { + if (itemId == 5432000 && !c.gainCharacterSlot()) { player.dropMessage(1, "You have already used up all 12 extra character slots."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } - + String name = slea.readMapleAsciiString(); int face = slea.readInt(); int hair = slea.readInt(); @@ -461,39 +470,25 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { int gender = slea.readInt(); int jobid = slea.readInt(); int improveSp = slea.readInt(); - - int createStatus; - switch(jobid) { - case 0: - createStatus = WarriorCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); - break; - - case 1: - createStatus = MagicianCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); - break; - - case 2: - createStatus = BowmanCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); - break; - - case 3: - createStatus = ThiefCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); - break; - - default: - createStatus = PirateCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); - } - - if(createStatus == 0) { - c.announce(PacketCreator.sendMapleLifeError(0)); // success! - + + int createStatus = switch (jobid) { + case 0 -> WarriorCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); + case 1 -> MagicianCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); + case 2 -> BowmanCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); + case 3 -> ThiefCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); + default -> PirateCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp); + }; + + if (createStatus == 0) { + c.sendPacket(PacketCreator.sendMapleLifeError(0)); // success! + player.showHint("#bSuccess#k on creation of the new character through the Maple Life card."); remove(c, position, itemId); } else { - if(createStatus == -1) { // check name - c.announce(PacketCreator.sendMapleLifeNameError()); + if (createStatus == -1) { // check name + c.sendPacket(PacketCreator.sendMapleLifeNameError()); } else { - c.announce(PacketCreator.sendMapleLifeError(-1 * createStatus)); + c.sendPacket(PacketCreator.sendMapleLifeError(-1 * createStatus)); } } } else if (itemType == 545) { // MiuMiu's travel store @@ -504,25 +499,25 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { remove(c, position, itemId); } } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } else if (itemType == 550) { //Extend item expiration - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (itemType == 552) { MapleInventoryType type = MapleInventoryType.getByType((byte) slea.readInt()); short slot = (short) slea.readInt(); Item item = player.getInventory(type).getItem(slot); if (item == null || item.getQuantity() <= 0 || MapleKarmaManipulator.hasKarmaFlag(item) || !ii.isKarmaAble(item.getItemId())) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } - + MapleKarmaManipulator.setKarmaFlag(item); player.forceUpdateItem(item); remove(c, position, itemId); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (itemType == 552) { //DS EGG THING - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else if (itemType == 557) { slea.readInt(); int itemSlot = slea.readInt(); @@ -534,70 +529,74 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { equip.setVicious(equip.getVicious() + 1); equip.setUpgradeSlots(equip.getUpgradeSlots() + 1); remove(c, position, itemId); - c.announce(PacketCreator.enableActions()); - c.announce(PacketCreator.sendHammerData(equip.getVicious())); + c.sendPacket(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.sendHammerData(equip.getVicious())); player.forceUpdateItem(equip); } else if (itemType == 561) { //VEGA'S SPELL if (slea.readInt() != 1) { return; } - + final byte eSlot = (byte) slea.readInt(); final Item eitem = player.getInventory(MapleInventoryType.EQUIP).getItem(eSlot); - + if (slea.readInt() != 2) { return; } - + final byte uSlot = (byte) slea.readInt(); final Item uitem = player.getInventory(MapleInventoryType.USE).getItem(uSlot); if (eitem == null || uitem == null) { return; } - + Equip toScroll = (Equip) eitem; if (toScroll.getUpgradeSlots() < 1) { - c.announce(PacketCreator.getInventoryFull()); + c.sendPacket(PacketCreator.getInventoryFull()); return; } - + //should have a check here against PE hacks - if(itemId / 1000000 != 5) itemId = 0; - + if (itemId / 1000000 != 5) { + itemId = 0; + } + player.toggleBlockCashShop(); - + final int curlevel = toScroll.getLevel(); - c.announce(PacketCreator.sendVegaScroll(0x40)); - + c.sendPacket(PacketCreator.sendVegaScroll(0x40)); + final Equip scrolled = (Equip) ii.scrollEquipWithId(toScroll, uitem.getItemId(), false, itemId, player.isGM()); - c.announce(PacketCreator.sendVegaScroll(scrolled.getLevel() > curlevel ? 0x41 : 0x43)); + c.sendPacket(PacketCreator.sendVegaScroll(scrolled.getLevel() > curlevel ? 0x41 : 0x43)); //opcodes 0x42, 0x44: "this item cannot be used"; 0x39, 0x45: crashes - + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, uSlot, (short) 1, false); remove(c, position, itemId); - + final MapleClient client = c; TimerManager.getInstance().schedule(() -> { -if(!player.isLoggedin()) return; + if (!player.isLoggedin()) { + return; + } -player.toggleBlockCashShop(); + player.toggleBlockCashShop(); -final List mods = new ArrayList<>(); -mods.add(new ModifyInventory(3, scrolled)); -mods.add(new ModifyInventory(0, scrolled)); -client.announce(PacketCreator.modifyInventory(true, mods)); + final List mods = new ArrayList<>(); + mods.add(new ModifyInventory(3, scrolled)); + mods.add(new ModifyInventory(0, scrolled)); + client.sendPacket(PacketCreator.modifyInventory(true, mods)); -ScrollResult scrollResult = scrolled.getLevel() > curlevel ? ScrollResult.SUCCESS : ScrollResult.FAIL; -player.getMap().broadcastMessage(PacketCreator.getScrollEffect(player.getId(), scrollResult, false, false)); -if (eSlot < 0 && (scrollResult == ScrollResult.SUCCESS)) { -player.equipChanged(); -} + ScrollResult scrollResult = scrolled.getLevel() > curlevel ? ScrollResult.SUCCESS : ScrollResult.FAIL; + player.getMap().broadcastMessage(PacketCreator.getScrollEffect(player.getId(), scrollResult, false, false)); + if (eSlot < 0 && (scrollResult == ScrollResult.SUCCESS)) { + player.equipChanged(); + } -client.announce(PacketCreator.enableActions()); + client.sendPacket(PacketCreator.enableActions()); }, 1000 * 3); } else { - System.out.println("NEW CASH ITEM: " + itemType + "\n" + slea.toString()); - c.announce(PacketCreator.enableActions()); + System.out.println("NEW CASH ITEM: " + itemType + "\n" + slea); + c.sendPacket(PacketCreator.enableActions()); } } @@ -612,7 +611,7 @@ client.announce(PacketCreator.enableActions()); position = it.getPosition(); } } - + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.CASH, position, (short) 1, true, false); } finally { cashInv.unlockInventory(); diff --git a/src/main/java/net/server/channel/handlers/UseCatchItemHandler.java b/src/main/java/net/server/channel/handlers/UseCatchItemHandler.java index 906d86772c..f20b5e4c57 100644 --- a/src/main/java/net/server/channel/handlers/UseCatchItemHandler.java +++ b/src/main/java/net/server/channel/handlers/UseCatchItemHandler.java @@ -64,7 +64,7 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); MapleInventoryManipulator.addById(c, 1902000, (short) 1, "", -1); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); break; case 2270001: if (mob.getId() == 9500197) { @@ -76,10 +76,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.addById(c, 4031830, (short) 1, "", -1); } else { abm.spam(10); - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } break; case 2270002: @@ -101,10 +101,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { abm.spam(10); } else { - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } break; case 2270003: @@ -115,10 +115,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); MapleInventoryManipulator.addById(c, 4031887, (short) 1, "", -1); } else { - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); break; case 2270005: if (mob.getId() == 9300187) { @@ -128,10 +128,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); MapleInventoryManipulator.addById(c, 2109001, (short) 1, "", -1); } else { - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); break; case 2270006: if (mob.getId() == 9300189) { @@ -141,10 +141,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); MapleInventoryManipulator.addById(c, 2109002, (short) 1, "", -1); } else { - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); break; case 2270007: if (mob.getId() == 9300191) { @@ -154,10 +154,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); MapleInventoryManipulator.addById(c, 2109003, (short) 1, "", -1); } else { - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); break; case 2270004: if (mob.getId() == 9300175) { @@ -167,10 +167,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); MapleInventoryManipulator.addById(c, 4001169, (short) 1, "", -1); } else { - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); break; case 2270008: if (mob.getId() == 9500336) { @@ -183,7 +183,7 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { } else { chr.message("You cannot use the Fishing Net yet."); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } break; default: @@ -206,14 +206,14 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler { } else if (mob.getId() != 9500336) { if (mobHp != 0) { abm.spam(10); - c.announce(PacketCreator.catchMessage(0)); + c.sendPacket(PacketCreator.catchMessage(0)); } } else { chr.message("You cannot use the Fishing Net yet."); } } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); // System.out.println("UseCatchItemHandler: \r\n" + slea.toString()); } diff --git a/src/main/java/net/server/channel/handlers/UseDeathItemHandler.java b/src/main/java/net/server/channel/handlers/UseDeathItemHandler.java index 5714263866..a8579a0397 100644 --- a/src/main/java/net/server/channel/handlers/UseDeathItemHandler.java +++ b/src/main/java/net/server/channel/handlers/UseDeathItemHandler.java @@ -31,6 +31,6 @@ public final class UseDeathItemHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { int itemId = slea.readInt(); c.getPlayer().setItemEffect(itemId); - c.announce(PacketCreator.itemEffect(c.getPlayer().getId(), itemId)); + c.sendPacket(PacketCreator.itemEffect(c.getPlayer().getId(), itemId)); } } diff --git a/src/main/java/net/server/channel/handlers/UseGachaExpHandler.java b/src/main/java/net/server/channel/handlers/UseGachaExpHandler.java index 7aa95462c8..5356016443 100644 --- a/src/main/java/net/server/channel/handlers/UseGachaExpHandler.java +++ b/src/main/java/net/server/channel/handlers/UseGachaExpHandler.java @@ -50,6 +50,6 @@ public class UseGachaExpHandler extends AbstractMaplePacketHandler { } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/UseHammerHandler.java b/src/main/java/net/server/channel/handlers/UseHammerHandler.java index 68c4640575..57802103de 100644 --- a/src/main/java/net/server/channel/handlers/UseHammerHandler.java +++ b/src/main/java/net/server/channel/handlers/UseHammerHandler.java @@ -32,6 +32,6 @@ import tools.data.input.SeekableLittleEndianAccessor; */ public final class UseHammerHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - c.announce(PacketCreator.sendHammerMessage()); + c.sendPacket(PacketCreator.sendHammerMessage()); } } diff --git a/src/main/java/net/server/channel/handlers/UseItemHandler.java b/src/main/java/net/server/channel/handlers/UseItemHandler.java index 32e150d0df..7a716b28b2 100644 --- a/src/main/java/net/server/channel/handlers/UseItemHandler.java +++ b/src/main/java/net/server/channel/handlers/UseItemHandler.java @@ -44,7 +44,7 @@ public final class UseItemHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); if (!chr.isAlive()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); @@ -108,6 +108,6 @@ public final class UseItemHandler extends AbstractMaplePacketHandler { private void remove(MapleClient c, short slot) { MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short) 1, false); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/UseMapleLifeHandler.java b/src/main/java/net/server/channel/handlers/UseMapleLifeHandler.java index 43ca8b9b25..36a2000e9b 100644 --- a/src/main/java/net/server/channel/handlers/UseMapleLifeHandler.java +++ b/src/main/java/net/server/channel/handlers/UseMapleLifeHandler.java @@ -37,18 +37,18 @@ public class UseMapleLifeHandler extends AbstractMaplePacketHandler { if(timeNow - player.getLastUsedCashItem() < 3000) { player.dropMessage(5, "Please wait a moment before trying again."); - c.announce(PacketCreator.sendMapleLifeError(3)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.sendMapleLifeError(3)); + c.sendPacket(PacketCreator.enableActions()); return; } player.setLastUsedCashItem(timeNow); String name = slea.readMapleAsciiString(); if(MapleCharacter.canCreateChar(name)) { - c.announce(PacketCreator.sendMapleLifeCharacterInfo()); + c.sendPacket(PacketCreator.sendMapleLifeCharacterInfo()); } else { - c.announce(PacketCreator.sendMapleLifeNameError()); + c.sendPacket(PacketCreator.sendMapleLifeNameError()); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/UseOwlOfMinervaHandler.java b/src/main/java/net/server/channel/handlers/UseOwlOfMinervaHandler.java index 1ca579a505..c8d21ef126 100644 --- a/src/main/java/net/server/channel/handlers/UseOwlOfMinervaHandler.java +++ b/src/main/java/net/server/channel/handlers/UseOwlOfMinervaHandler.java @@ -59,6 +59,6 @@ public final class UseOwlOfMinervaHandler extends AbstractMaplePacketHandler { } } - c.announce(PacketCreator.getOwlOpen(owlLeaderboards)); + c.sendPacket(PacketCreator.getOwlOpen(owlLeaderboards)); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/UseSolomonHandler.java b/src/main/java/net/server/channel/handlers/UseSolomonHandler.java index 7d6aa7df59..dbc984b42c 100644 --- a/src/main/java/net/server/channel/handlers/UseSolomonHandler.java +++ b/src/main/java/net/server/channel/handlers/UseSolomonHandler.java @@ -75,6 +75,6 @@ public final class UseSolomonHandler extends AbstractMaplePacketHandler { } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/UseSummonBagHandler.java b/src/main/java/net/server/channel/handlers/UseSummonBagHandler.java index 0eedeebe3f..3b9322d072 100644 --- a/src/main/java/net/server/channel/handlers/UseSummonBagHandler.java +++ b/src/main/java/net/server/channel/handlers/UseSummonBagHandler.java @@ -42,7 +42,7 @@ public final class UseSummonBagHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { //[4A 00][6C 4C F2 02][02 00][63 0B 20 00] if (!c.getPlayer().isAlive()) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } slea.readInt(); @@ -58,6 +58,6 @@ public final class UseSummonBagHandler extends AbstractMaplePacketHandler { } } } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/net/server/channel/handlers/WeddingHandler.java b/src/main/java/net/server/channel/handlers/WeddingHandler.java index 3bfc0bc374..0d9f4c3f41 100644 --- a/src/main/java/net/server/channel/handlers/WeddingHandler.java +++ b/src/main/java/net/server/channel/handlers/WeddingHandler.java @@ -20,7 +20,7 @@ import net.AbstractMaplePacketHandler; import server.MapleMarriage; import tools.PacketCreator; import tools.data.input.SeekableLittleEndianAccessor; -import tools.packets.Wedding; +import tools.packets.WeddingPackets; import java.util.Collections; import java.util.List; @@ -74,10 +74,10 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { MapleKarmaManipulator.toggleKarmaFlagToUntradeable(newItem); marriage.setIntProperty(groomWishlistProp, giftCount + 1); - c.announce(Wedding.OnWeddingGiftResult((byte) 0xB, marriage.getWishlistItems(groomWishlist), Collections.singletonList(newItem))); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xB, marriage.getWishlistItems(groomWishlist), Collections.singletonList(newItem))); } } else { - c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null)); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null)); } } } finally { @@ -89,17 +89,17 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { marriage.saveGiftItemsToDb(c, groomWishlist, cid); } } else { - c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null)); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null)); } } else { - c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null)); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null)); } } else { - c.announce(Wedding.OnWeddingGiftResult((byte) 0xC, marriage.getWishlistItems(groomWishlist), null)); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xC, marriage.getWishlistItems(groomWishlist), null)); } } catch (NumberFormatException nfe) {} } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } else if (mode == 7) { // take items slea.readByte(); // invType @@ -117,14 +117,14 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { MapleInventoryManipulator.addFromDrop(c, item, true); - c.announce(Wedding.OnWeddingGiftResult((byte) 0xF, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist))); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xF, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist))); } else { c.getPlayer().dropMessage(1, "Free a slot on your inventory before collecting this item."); - c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist))); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist))); } } else { c.getPlayer().dropMessage(1, "You have already collected this item."); - c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist))); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist))); } } } else { @@ -136,18 +136,18 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { MapleMarriage.saveGiftItemsToDb(c, items, chr.getId()); MapleInventoryManipulator.addFromDrop(c, item, true); - c.announce(Wedding.OnWeddingGiftResult((byte) 0xF, Collections.singletonList(""), items)); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xF, Collections.singletonList(""), items)); } else { c.getPlayer().dropMessage(1, "Free a slot on your inventory before collecting this item."); - c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items)); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items)); } } catch (Exception e) { c.getPlayer().dropMessage(1, "You have already collected this item."); - c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items)); + c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items)); } } } else if (mode == 8) { // out of Wedding Registry - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } else { System.out.println(mode); } diff --git a/src/main/java/net/server/channel/handlers/WeddingTalkHandler.java b/src/main/java/net/server/channel/handlers/WeddingTalkHandler.java index 9f93e371c7..dec9329860 100644 --- a/src/main/java/net/server/channel/handlers/WeddingTalkHandler.java +++ b/src/main/java/net/server/channel/handlers/WeddingTalkHandler.java @@ -25,7 +25,7 @@ import net.AbstractMaplePacketHandler; import scripting.event.EventInstanceManager; import tools.PacketCreator; import tools.data.input.SeekableLittleEndianAccessor; -import tools.packets.Wedding; +import tools.packets.WeddingPackets; /** * @@ -40,14 +40,14 @@ public final class WeddingTalkHandler extends AbstractMaplePacketHandler { EventInstanceManager eim = c.getPlayer().getEventInstance(); if(eim != null && !(c.getPlayer().getId() == eim.getIntProperty("groomId") || c.getPlayer().getId() == eim.getIntProperty("brideId"))) { - c.announce(Wedding.OnWeddingProgress(false, 0, 0, (byte) 2)); + c.sendPacket(WeddingPackets.OnWeddingProgress(false, 0, 0, (byte) 2)); } else { - c.announce(Wedding.OnWeddingProgress(true, 0, 0, (byte) 3)); + c.sendPacket(WeddingPackets.OnWeddingProgress(true, 0, 0, (byte) 3)); } } else { - c.announce(Wedding.OnWeddingProgress(true, 0, 0, (byte) 3)); + c.sendPacket(WeddingPackets.OnWeddingProgress(true, 0, 0, (byte) 3)); } - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/WeddingTalkMoreHandler.java b/src/main/java/net/server/channel/handlers/WeddingTalkMoreHandler.java index 00f1d054ec..fd77aacc28 100644 --- a/src/main/java/net/server/channel/handlers/WeddingTalkMoreHandler.java +++ b/src/main/java/net/server/channel/handlers/WeddingTalkMoreHandler.java @@ -25,7 +25,7 @@ import net.AbstractMaplePacketHandler; import scripting.event.EventInstanceManager; import tools.PacketCreator; import tools.data.input.SeekableLittleEndianAccessor; -import tools.packets.Wedding; +import tools.packets.WeddingPackets; /** * @@ -41,7 +41,7 @@ public final class WeddingTalkMoreHandler extends AbstractMaplePacketHandler { c.getPlayer().dropMessage(5, "High Priest John: Your blessings have been added to their love. What a noble act for a lovely couple!"); } - c.announce(Wedding.OnWeddingProgress(true, 0, 0, (byte) 3)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(WeddingPackets.OnWeddingProgress(true, 0, 0, (byte) 3)); + c.sendPacket(PacketCreator.enableActions()); } } \ No newline at end of file diff --git a/src/main/java/net/server/channel/handlers/WhisperHandler.java b/src/main/java/net/server/channel/handlers/WhisperHandler.java index 6bb6ab73a1..db0bbf9c29 100644 --- a/src/main/java/net/server/channel/handlers/WhisperHandler.java +++ b/src/main/java/net/server/channel/handlers/WhisperHandler.java @@ -50,7 +50,7 @@ public final class WhisperHandler extends AbstractMaplePacketHandler { MapleCharacter target = c.getWorldServer().getPlayerStorage().getCharacterByName(name); if (target == null) { - c.announce(PacketCreator.getWhisperResult(name, false)); + c.sendPacket(PacketCreator.getWhisperResult(name, false)); return; } @@ -74,15 +74,15 @@ public final class WhisperHandler extends AbstractMaplePacketHandler { private void handleFind(MapleCharacter user, MapleCharacter target, byte flag) { if (user.gmLevel() >= target.gmLevel()) { if (target.getCashShop().isOpened()) { - user.announce(PacketCreator.getFindResult(target, RT_CASH_SHOP, -1, flag)); + user.sendPacket(PacketCreator.getFindResult(target, RT_CASH_SHOP, -1, flag)); } else if (target.getClient().getChannel() == user.getClient().getChannel()) { - user.announce(PacketCreator.getFindResult(target, RT_SAME_CHANNEL, target.getMapId(), flag)); + user.sendPacket(PacketCreator.getFindResult(target, RT_SAME_CHANNEL, target.getMapId(), flag)); } else { - user.announce(PacketCreator.getFindResult(target, RT_DIFFERENT_CHANNEL, target.getClient().getChannel() - 1, flag)); + user.sendPacket(PacketCreator.getFindResult(target, RT_DIFFERENT_CHANNEL, target.getClient().getChannel() - 1, flag)); } } else { // not found for whisper is the same message - user.announce(PacketCreator.getWhisperResult(target.getName(), false)); + user.sendPacket(PacketCreator.getWhisperResult(target.getName(), false)); } } @@ -103,9 +103,9 @@ public final class WhisperHandler extends AbstractMaplePacketHandler { LogHelper.logChat(user.getClient(), "Whisper To " + target.getName(), message); } - target.announce(PacketCreator.getWhisperReceive(user.getName(), user.getClient().getChannel() - 1, user.isGM(), message)); + target.sendPacket(PacketCreator.getWhisperReceive(user.getName(), user.getClient().getChannel() - 1, user.isGM(), message)); boolean hidden = target.isHidden() && target.gmLevel() > user.gmLevel(); - user.announce(PacketCreator.getWhisperResult(target.getName(), !hidden)); + user.sendPacket(PacketCreator.getWhisperResult(target.getName(), !hidden)); } } diff --git a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java index d6694a841f..944c33d60d 100644 --- a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java +++ b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java @@ -22,13 +22,14 @@ package net.server.coordinator.matchchecker.listener; import client.MapleCharacter; import config.YamlConfig; import constants.game.GameConstants; +import net.packet.Packet; import net.server.Server; import net.server.coordinator.matchchecker.AbstractMatchCheckerListener; import net.server.coordinator.matchchecker.MatchCheckerListenerRecipe; +import net.server.guild.GuildPackets; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; import net.server.world.MapleParty; -import tools.PacketCreator; import java.util.Set; @@ -41,7 +42,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { private static void broadcastGuildCreationDismiss(Set nonLeaderMatchPlayers) { for (MapleCharacter chr : nonLeaderMatchPlayers) { if (chr.isLoggedinWorld()) { - chr.announce(PacketCreator.genericGuildMessage((byte) 0x26)); + chr.sendPacket(GuildPackets.genericGuildMessage((byte) 0x26)); } } } @@ -56,11 +57,11 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { @Override public void onMatchCreated(MapleCharacter leader, Set nonLeaderMatchPlayers, String message) { - byte[] createGuildPacket = PacketCreator.createGuildMessage(leader.getName(), message); + Packet createGuildPacket = GuildPackets.createGuildMessage(leader.getName(), message); for (MapleCharacter chr : nonLeaderMatchPlayers) { if (chr.isLoggedinWorld()) { - chr.announce(createGuildPacket); + chr.sendPacket(createGuildPacket); } } } @@ -112,7 +113,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { int gid = Server.getInstance().createGuild(leader.getId(), message); if (gid == 0) { - leader.announce(PacketCreator.genericGuildMessage((byte) 0x23)); + leader.sendPacket(GuildPackets.genericGuildMessage((byte) 0x23)); broadcastGuildCreationDismiss(matchPlayers); return; } @@ -122,7 +123,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { MapleGuild guild = Server.getInstance().getGuild(leader.getGuildId(), leader.getWorld(), leader); // initialize guild structure Server.getInstance().changeRank(gid, leader.getId(), 1); - leader.announce(PacketCreator.showGuildInfo(leader)); + leader.sendPacket(GuildPackets.showGuildInfo(leader)); leader.dropMessage(1, "You have successfully created a Guild."); for (MapleCharacter chr : matchPlayers) { @@ -136,7 +137,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { Server.getInstance().addGuildMember(mgc, chr); if (chr.isLoggedinWorld()) { - chr.announce(PacketCreator.showGuildInfo(chr)); + chr.sendPacket(GuildPackets.showGuildInfo(chr)); if (cofounder) { chr.dropMessage(1, "You have successfully cofounded a Guild."); @@ -160,7 +161,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { } if (chr.isLoggedinWorld()) { - chr.announce(PacketCreator.genericGuildMessage((byte)0x26)); + chr.sendPacket(GuildPackets.genericGuildMessage((byte)0x26)); } } } @@ -190,7 +191,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { if (chr.isLoggedinWorld()) { chr.message(msg); - chr.announce(PacketCreator.genericGuildMessage((byte)0x26)); + chr.sendPacket(GuildPackets.genericGuildMessage((byte)0x26)); } } } diff --git a/src/main/java/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java b/src/main/java/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java index 9b3f2c6c36..408dfa315c 100644 --- a/src/main/java/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java +++ b/src/main/java/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java @@ -292,7 +292,7 @@ public class MaplePartySearchCoordinator { if (MapleInviteCoordinator.createInvite(InviteType.PARTY, leader, partyid, chr.getId())) { chr.disablePartySearchInvite(leader.getId()); - chr.announce(PacketCreator.partySearchInvite(leader)); + chr.sendPacket(PacketCreator.partySearchInvite(leader)); return true; } else { return false; diff --git a/src/main/java/net/server/guild/GuildPackets.java b/src/main/java/net/server/guild/GuildPackets.java new file mode 100644 index 0000000000..92309848dd --- /dev/null +++ b/src/main/java/net/server/guild/GuildPackets.java @@ -0,0 +1,543 @@ +package net.server.guild; + +import client.MapleCharacter; +import client.MapleClient; +import net.opcodes.SendOpcode; +import net.packet.OutPacket; +import net.packet.Packet; +import net.server.Server; +import tools.PacketCreator; +import tools.Pair; +import tools.StringUtil; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collection; +import java.util.List; + +public class GuildPackets { + public static Packet showGuildInfo(MapleCharacter chr) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x1A); //signature for showing guild info + if (chr == null) { //show empty guild (used for leaving, expelled) + p.writeByte(0); + return p; + } + MapleGuild g = chr.getClient().getWorldServer().getGuild(chr.getMGC()); + if (g == null) { //failed to read from DB - don't show a guild + p.writeByte(0); + return p; + } + p.writeByte(1); //bInGuild + p.writeInt(g.getId()); + p.writeString(g.getName()); + for (int i = 1; i <= 5; i++) { + p.writeString(g.getRankTitle(i)); + } + Collection members = g.getMembers(); + p.writeByte(members.size()); //then it is the size of all the members + for (MapleGuildCharacter mgc : members) {//and each of their character ids o_O + p.writeInt(mgc.getId()); + } + for (MapleGuildCharacter mgc : members) { + p.writeFixedString(StringUtil.getRightPaddedStr(mgc.getName(), '\0', 13)); + p.writeInt(mgc.getJobId()); + p.writeInt(mgc.getLevel()); + p.writeInt(mgc.getGuildRank()); + p.writeInt(mgc.isOnline() ? 1 : 0); + p.writeInt(g.getSignature()); + p.writeInt(mgc.getAllianceRank()); + } + p.writeInt(g.getCapacity()); + p.writeShort(g.getLogoBG()); + p.writeByte(g.getLogoBGColor()); + p.writeShort(g.getLogo()); + p.writeByte(g.getLogoColor()); + p.writeString(g.getNotice()); + p.writeInt(g.getGP()); + p.writeInt(g.getAllianceId()); + return p; + } + + public static Packet guildMemberOnline(int guildId, int chrId, boolean bOnline) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x3d); + p.writeInt(guildId); + p.writeInt(chrId); + p.writeBool(bOnline); + return p; + } + + public static Packet guildInvite(int guildId, String charName) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x05); + p.writeInt(guildId); + p.writeString(charName); + return p; + } + + public static Packet createGuildMessage(String masterName, String guildName) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x3); + p.writeInt(0); + p.writeString(masterName); + p.writeString(guildName); + return p; + } + + /** + * Gets a Heracle/guild message packet. + *

+ * Possible values for code:
28: guild name already in use
+ * 31: problem in locating players during agreement
33/40: already joined a guild
+ * 35: Cannot make guild
36: problem in player agreement
38: problem during forming guild
+ * 41: max number of players in joining guild
42: character can't be found this channel
+ * 45/48: character not in guild
52: problem in disbanding guild
56: admin cannot make guild
+ * 57: problem in increasing guild size
+ * + * @param code The response code. + * @return The guild message packet. + */ + public static Packet genericGuildMessage(byte code) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(code); + return p; + } + + /** + * Gets a guild message packet appended with target name. + *

+ * 53: player not accepting guild invites
+ * 54: player already managing an invite
55: player denied an invite
+ * + * @param code The response code. + * @param targetName The initial player target of the invitation. + * @return The guild message packet. + */ + public static Packet responseGuildMessage(byte code, String targetName) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(code); + p.writeString(targetName); + return p; + } + + public static Packet newGuildMember(MapleGuildCharacter mgc) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x27); + p.writeInt(mgc.getGuildId()); + p.writeInt(mgc.getId()); + p.writeFixedString(StringUtil.getRightPaddedStr(mgc.getName(), '\0', 13)); + p.writeInt(mgc.getJobId()); + p.writeInt(mgc.getLevel()); + p.writeInt(mgc.getGuildRank()); //should be always 5 but whatevs + p.writeInt(mgc.isOnline() ? 1 : 0); //should always be 1 too + p.writeInt(1); //? could be guild signature, but doesn't seem to matter + p.writeInt(3); + return p; + } + + //someone leaving, mode == 0x2c for leaving, 0x2f for expelled + public static Packet memberLeft(MapleGuildCharacter mgc, boolean bExpelled) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(bExpelled ? 0x2f : 0x2c); + p.writeInt(mgc.getGuildId()); + p.writeInt(mgc.getId()); + p.writeString(mgc.getName()); + return p; + } + + //rank change + public static Packet changeRank(MapleGuildCharacter mgc) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x40); + p.writeInt(mgc.getGuildId()); + p.writeInt(mgc.getId()); + p.writeByte(mgc.getGuildRank()); + return p; + } + + public static Packet guildNotice(int guildId, String notice) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x44); + p.writeInt(guildId); + p.writeString(notice); + return p; + } + + public static Packet guildMemberLevelJobUpdate(MapleGuildCharacter mgc) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x3C); + p.writeInt(mgc.getGuildId()); + p.writeInt(mgc.getId()); + p.writeInt(mgc.getLevel()); + p.writeInt(mgc.getJobId()); + return p; + } + + public static Packet rankTitleChange(int guildId, String[] ranks) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x3E); + p.writeInt(guildId); + for (int i = 0; i < 5; i++) { + p.writeString(ranks[i]); + } + return p; + } + + public static Packet guildDisband(int guildId) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x32); + p.writeInt(guildId); + p.writeByte(1); + return p; + } + + public static Packet guildQuestWaitingNotice(byte channel, int waitingPos) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x4C); + p.writeByte(channel - 1); + p.writeByte(waitingPos); + return p; + } + + public static Packet guildEmblemChange(int guildId, short bg, byte bgcolor, short logo, byte logoColor) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x42); + p.writeInt(guildId); + p.writeShort(bg); + p.writeByte(bgcolor); + p.writeShort(logo); + p.writeByte(logoColor); + return p; + } + + public static Packet guildCapacityChange(int guildId, int capacity) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x3A); + p.writeInt(guildId); + p.writeByte(capacity); + return p; + } + + public static void addThread(final OutPacket p, ResultSet rs) throws SQLException { + p.writeInt(rs.getInt("localthreadid")); + p.writeInt(rs.getInt("postercid")); + p.writeString(rs.getString("name")); + p.writeLong(PacketCreator.getTime(rs.getLong("timestamp"))); + p.writeInt(rs.getInt("icon")); + p.writeInt(rs.getInt("replycount")); + } + + public static Packet BBSThreadList(ResultSet rs, int start) throws SQLException { + OutPacket p = OutPacket.create(SendOpcode.GUILD_BBS_PACKET); + p.writeByte(0x06); + if (!rs.last()) { + p.writeByte(0); + p.writeInt(0); + p.writeInt(0); + return p; + } + int threadCount = rs.getRow(); + if (rs.getInt("localthreadid") == 0) { //has a notice + p.writeByte(1); + addThread(p, rs); + threadCount--; //one thread didn't count (because it's a notice) + } else { + p.writeByte(0); + } + if (!rs.absolute(start + 1)) { //seek to the thread before where we start + rs.first(); //uh, we're trying to start at a place past possible + start = 0; + } + p.writeInt(threadCount); + p.writeInt(Math.min(10, threadCount - start)); + for (int i = 0; i < Math.min(10, threadCount - start); i++) { + addThread(p, rs); + rs.next(); + } + return p; + } + + public static Packet showThread(int localthreadid, ResultSet threadRS, ResultSet repliesRS) throws SQLException, RuntimeException { + OutPacket p = OutPacket.create(SendOpcode.GUILD_BBS_PACKET); + p.writeByte(0x07); + p.writeInt(localthreadid); + p.writeInt(threadRS.getInt("postercid")); + p.writeLong(PacketCreator.getTime(threadRS.getLong("timestamp"))); + p.writeString(threadRS.getString("name")); + p.writeString(threadRS.getString("startpost")); + p.writeInt(threadRS.getInt("icon")); + if (repliesRS != null) { + int replyCount = threadRS.getInt("replycount"); + p.writeInt(replyCount); + int i; + for (i = 0; i < replyCount && repliesRS.next(); i++) { + p.writeInt(repliesRS.getInt("replyid")); + p.writeInt(repliesRS.getInt("postercid")); + p.writeLong(PacketCreator.getTime(repliesRS.getLong("timestamp"))); + p.writeString(repliesRS.getString("content")); + } + if (i != replyCount || repliesRS.next()) { + throw new RuntimeException(String.valueOf(threadRS.getInt("threadid"))); + } + } else { + p.writeInt(0); + } + return p; + } + + public static Packet showGuildRanks(int npcid, ResultSet rs) throws SQLException { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x49); + p.writeInt(npcid); + if (!rs.last()) { //no guilds o.o + p.writeInt(0); + return p; + } + p.writeInt(rs.getRow()); //number of entries + rs.beforeFirst(); + while (rs.next()) { + p.writeString(rs.getString("name")); + p.writeInt(rs.getInt("GP")); + p.writeInt(rs.getInt("logo")); + p.writeInt(rs.getInt("logoColor")); + p.writeInt(rs.getInt("logoBG")); + p.writeInt(rs.getInt("logoBGColor")); + } + return p; + } + + public static Packet showPlayerRanks(int npcid, List> worldRanking) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x49); + p.writeInt(npcid); + if (worldRanking.isEmpty()) { + p.writeInt(0); + return p; + } + p.writeInt(worldRanking.size()); + for (Pair wr : worldRanking) { + p.writeString(wr.getLeft()); + p.writeInt(wr.getRight()); + p.writeInt(0); + p.writeInt(0); + p.writeInt(0); + p.writeInt(0); + } + return p; + } + + public static Packet updateGP(int guildId, int GP) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION); + p.writeByte(0x48); + p.writeInt(guildId); + p.writeInt(GP); + return p; + } + + public static void getGuildInfo(OutPacket p, MapleGuild guild) { + p.writeInt(guild.getId()); + p.writeString(guild.getName()); + for (int i = 1; i <= 5; i++) { + p.writeString(guild.getRankTitle(i)); + } + Collection members = guild.getMembers(); + p.writeByte(members.size()); + for (MapleGuildCharacter mgc : members) { + p.writeInt(mgc.getId()); + } + for (MapleGuildCharacter mgc : members) { + p.writeFixedString(StringUtil.getRightPaddedStr(mgc.getName(), '\0', 13)); + p.writeInt(mgc.getJobId()); + p.writeInt(mgc.getLevel()); + p.writeInt(mgc.getGuildRank()); + p.writeInt(mgc.isOnline() ? 1 : 0); + p.writeInt(guild.getSignature()); + p.writeInt(mgc.getAllianceRank()); + } + p.writeInt(guild.getCapacity()); + p.writeShort(guild.getLogoBG()); + p.writeByte(guild.getLogoBGColor()); + p.writeShort(guild.getLogo()); + p.writeByte(guild.getLogoColor()); + p.writeString(guild.getNotice()); + p.writeInt(guild.getGP()); + p.writeInt(guild.getAllianceId()); + } + + public static Packet getAllianceInfo(MapleAlliance alliance) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x0C); + p.writeByte(1); + p.writeInt(alliance.getId()); + p.writeString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + p.writeString(alliance.getRankTitle(i)); + } + p.writeByte(alliance.getGuilds().size()); + p.writeInt(alliance.getCapacity()); // probably capacity + for (Integer guild : alliance.getGuilds()) { + p.writeInt(guild); + } + p.writeString(alliance.getNotice()); + return p; + } + + public static Packet updateAllianceInfo(MapleAlliance alliance, int world) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x0F); + p.writeInt(alliance.getId()); + p.writeString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + p.writeString(alliance.getRankTitle(i)); + } + p.writeByte(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + p.writeInt(guild); + } + p.writeInt(alliance.getCapacity()); // probably capacity + p.writeShort(0); + for (Integer guildid : alliance.getGuilds()) { + getGuildInfo(p, Server.getInstance().getGuild(guildid, world)); + } + return p; + } + + public static Packet getGuildAlliances(MapleAlliance alliance, int worldId) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x0D); + p.writeInt(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + getGuildInfo(p, Server.getInstance().getGuild(guild, worldId)); + } + return p; + } + + public static Packet addGuildToAlliance(MapleAlliance alliance, int newGuild, MapleClient c) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x12); + p.writeInt(alliance.getId()); + p.writeString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + p.writeString(alliance.getRankTitle(i)); + } + p.writeByte(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + p.writeInt(guild); + } + p.writeInt(alliance.getCapacity()); + p.writeString(alliance.getNotice()); + p.writeInt(newGuild); + getGuildInfo(p, Server.getInstance().getGuild(newGuild, c.getWorld(), null)); + return p; + } + + public static Packet allianceMemberOnline(MapleCharacter mc, boolean online) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x0E); + p.writeInt(mc.getGuild().getAllianceId()); + p.writeInt(mc.getGuildId()); + p.writeInt(mc.getId()); + p.writeBool(online); + return p; + } + + public static Packet allianceNotice(int id, String notice) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x1C); + p.writeInt(id); + p.writeString(notice); + return p; + } + + public static Packet changeAllianceRankTitle(int alliance, String[] ranks) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x1A); + p.writeInt(alliance); + for (int i = 0; i < 5; i++) { + p.writeString(ranks[i]); + } + return p; + } + + public static Packet updateAllianceJobLevel(MapleCharacter mc) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x18); + p.writeInt(mc.getGuild().getAllianceId()); + p.writeInt(mc.getGuildId()); + p.writeInt(mc.getId()); + p.writeInt(mc.getLevel()); + p.writeInt(mc.getJob().getId()); + return p; + } + + public static Packet removeGuildFromAlliance(MapleAlliance alliance, int expelledGuild, int worldId) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x10); + p.writeInt(alliance.getId()); + p.writeString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + p.writeString(alliance.getRankTitle(i)); + } + p.writeByte(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + p.writeInt(guild); + } + p.writeInt(alliance.getCapacity()); + p.writeString(alliance.getNotice()); + p.writeInt(expelledGuild); + getGuildInfo(p, Server.getInstance().getGuild(expelledGuild, worldId, null)); + p.writeByte(0x01); + return p; + } + + public static Packet disbandAlliance(int alliance) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x1D); + p.writeInt(alliance); + return p; + } + + public static Packet allianceInvite(int allianceid, MapleCharacter chr) { + OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION); + p.writeByte(0x03); + p.writeInt(allianceid); + p.writeString(chr.getName()); + p.writeShort(0); + return p; + } + + public static Packet GuildBoss_HealerMove(short nY) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_BOSS_HEALER_MOVE); + p.writeShort(nY); //New Y Position + return p; + } + + public static Packet GuildBoss_PulleyStateChange(byte nState) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_BOSS_PULLEY_STATE_CHANGE); + p.writeByte(nState); + return p; + } + + /** + * Guild Name & Mark update packet, thanks to Arnah (Vertisy) + * + * @param guildName The Guild name, blank for nothing. + */ + public static Packet guildNameChanged(int chrid, String guildName) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_NAME_CHANGED); + p.writeInt(chrid); + p.writeString(guildName); + return p; + } + + public static Packet guildMarkChanged(int chrId, MapleGuild guild) { + OutPacket p = OutPacket.create(SendOpcode.GUILD_MARK_CHANGED); + p.writeInt(chrId); + p.writeShort(guild.getLogoBG()); + p.writeByte(guild.getLogoBGColor()); + p.writeShort(guild.getLogo()); + p.writeByte(guild.getLogoColor()); + return p; + } +} diff --git a/src/main/java/net/server/guild/MapleAlliance.java b/src/main/java/net/server/guild/MapleAlliance.java index 70007d2128..6b46359cc9 100644 --- a/src/main/java/net/server/guild/MapleAlliance.java +++ b/src/main/java/net/server/guild/MapleAlliance.java @@ -23,6 +23,7 @@ package net.server.guild; import client.MapleCharacter; import client.MapleClient; +import net.packet.Packet; import net.server.Server; import net.server.coordinator.world.MapleInviteCoordinator; import net.server.coordinator.world.MapleInviteCoordinator.InviteType; @@ -30,7 +31,6 @@ import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; import tools.DatabaseConnection; -import tools.PacketCreator; import java.sql.Connection; import java.sql.PreparedStatement; @@ -141,8 +141,8 @@ public class MapleAlliance { Server.getInstance().addAlliance(id, alliance); int worldid = guildMasters.get(0).getWorld(); - Server.getInstance().allianceMessage(id, PacketCreator.updateAllianceInfo(alliance, worldid), -1, -1); - Server.getInstance().allianceMessage(id, PacketCreator.getGuildAlliances(alliance, worldid), -1, -1); // thanks Vcoc for noticing guilds from other alliances being visually stacked here due to this not being updated + Server.getInstance().allianceMessage(id, GuildPackets.updateAllianceInfo(alliance, worldid), -1, -1); + Server.getInstance().allianceMessage(id, GuildPackets.getGuildAlliances(alliance, worldid), -1, -1); // thanks Vcoc for noticing guilds from other alliances being visually stacked here due to this not being updated } catch (Exception e) { e.printStackTrace(); return null; @@ -273,7 +273,7 @@ public class MapleAlliance { ps.executeUpdate(); } - Server.getInstance().allianceMessage(allianceId, PacketCreator.disbandAlliance(allianceId), -1, -1); + Server.getInstance().allianceMessage(allianceId, GuildPackets.disbandAlliance(allianceId), -1, -1); Server.getInstance().disbandAlliance(allianceId); } catch (SQLException sqle) { sqle.printStackTrace(); @@ -298,13 +298,13 @@ public class MapleAlliance { return false; } - srv.allianceMessage(alliance.getId(), PacketCreator.removeGuildFromAlliance(alliance, guildId, worldId), -1, -1); + srv.allianceMessage(alliance.getId(), GuildPackets.removeGuildFromAlliance(alliance, guildId, worldId), -1, -1); srv.removeGuildFromAlliance(alliance.getId(), guildId); removeGuildFromAllianceOnDb(guildId); - srv.allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, worldId), -1, -1); - srv.allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); - srv.guildMessage(guildId, PacketCreator.disbandAlliance(alliance.getId())); + srv.allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, worldId), -1, -1); + srv.allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); + srv.guildMessage(guildId, GuildPackets.disbandAlliance(alliance.getId())); alliance.dropMessage("[" + srv.getGuild(guildId, worldId).getName() + "] guild has left the union."); return true; @@ -312,8 +312,8 @@ public class MapleAlliance { public void updateAlliancePackets(MapleCharacter chr) { if (allianceId > 0) { - this.broadcastMessage(PacketCreator.updateAllianceInfo(this, chr.getWorld())); - this.broadcastMessage(PacketCreator.allianceNotice(this.getId(), this.getNotice())); + this.broadcastMessage(GuildPackets.updateAllianceInfo(this, chr.getWorld())); + this.broadcastMessage(GuildPackets.allianceNotice(this.getId(), this.getNotice())); } } @@ -431,7 +431,7 @@ public class MapleAlliance { } } - public void broadcastMessage(byte[] packet) { + public void broadcastMessage(Packet packet) { Server.getInstance().allianceMessage(allianceId, packet, -1, -1); } @@ -448,7 +448,7 @@ public class MapleAlliance { c.getPlayer().dropMessage(5, "The master of the guild that you offered an invitation is currently not online."); } else { if (MapleInviteCoordinator.createInvite(InviteType.ALLIANCE, c.getPlayer(), allianceId, victim.getId())) { - victim.getClient().announce(PacketCreator.allianceInvite(allianceId, c.getPlayer())); + victim.sendPacket(GuildPackets.allianceInvite(allianceId, c.getPlayer())); } else { c.getPlayer().dropMessage(5, "The master of the guild that you offered an invitation is currently managing another invite."); } diff --git a/src/main/java/net/server/guild/MapleGuild.java b/src/main/java/net/server/guild/MapleGuild.java index 5d825ccb64..48f19e0b1e 100644 --- a/src/main/java/net/server/guild/MapleGuild.java +++ b/src/main/java/net/server/guild/MapleGuild.java @@ -24,6 +24,7 @@ package net.server.guild; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; +import net.packet.Packet; import net.server.PlayerStorage; import net.server.Server; import net.server.audit.locks.MonitoredLockType; @@ -184,7 +185,7 @@ public class MapleGuild { membersLock.lock(); try { - this.broadcast(PacketCreator.guildDisband(this.id)); + this.broadcast(GuildPackets.guildDisband(this.id)); } finally { membersLock.unlock(); } @@ -279,8 +280,8 @@ public class MapleGuild { continue; } - byte[] packet = PacketCreator.guildNameChanged(chr.getId(), this.getName()); - chr.getMap().broadcastMessage(chr, packet); + Packet packet = GuildPackets.guildNameChanged(chr.getId(), this.getName()); + chr.getMap().broadcastPacket(chr, packet); } } @@ -293,8 +294,8 @@ public class MapleGuild { continue; } - byte[] packet = PacketCreator.guildMarkChanged(chr.getId(), this); - chr.getMap().broadcastMessage(chr, packet); + Packet packet = GuildPackets.guildMarkChanged(chr.getId(), this); + chr.getMap().broadcastPacket(chr, packet); } } @@ -307,20 +308,19 @@ public class MapleGuild { continue; } - byte[] packet = PacketCreator.showGuildInfo(chr); - chr.announce(packet); + chr.sendPacket(GuildPackets.showGuildInfo(chr)); } } - public void broadcast(final byte[] packet) { + public void broadcast(Packet packet) { broadcast(packet, -1, BCOp.NONE); } - public void broadcast(final byte[] packet, int exception) { + public void broadcast(Packet packet, int exception) { broadcast(packet, exception, BCOp.NONE); } - public void broadcast(final byte[] packet, int exceptionId, BCOp bcop) { + public void broadcast(Packet packet, int exceptionId, BCOp bcop) { membersLock.lock(); // membersLock awareness thanks to ProjectNano dev team try { synchronized (notifications) { @@ -349,13 +349,13 @@ public class MapleGuild { } } - public void guildMessage(final byte[] serverNotice) { + public void guildMessage(Packet serverNotice) { membersLock.lock(); try { for (MapleGuildCharacter mgc : members) { for (Channel cs : Server.getInstance().getChannelsFromWorld(world)) { if (cs.getPlayerStorage().getCharacterById(mgc.getId()) != null) { - cs.getPlayerStorage().getCharacterById(mgc.getId()).getClient().announce(serverNotice); + cs.getPlayerStorage().getCharacterById(mgc.getId()).sendPacket(serverNotice); break; } } @@ -382,7 +382,7 @@ public class MapleGuild { } } - public void broadcastMessage(byte[] packet) { + public void broadcastMessage(Packet packet) { Server.getInstance().guildMessage(id, packet); } @@ -401,7 +401,7 @@ public class MapleGuild { } } if (bBroadcast) { - this.broadcast(PacketCreator.guildMemberOnline(id, cid, online), cid); + this.broadcast(GuildPackets.guildMemberOnline(id, cid, online), cid); } bDirty = true; } finally { @@ -479,7 +479,7 @@ public class MapleGuild { } } - this.broadcast(PacketCreator.newGuildMember(mgc)); + this.broadcast(GuildPackets.newGuildMember(mgc)); return 1; } finally { membersLock.unlock(); @@ -489,7 +489,7 @@ public class MapleGuild { public void leaveGuild(MapleGuildCharacter mgc) { membersLock.lock(); try { - this.broadcast(PacketCreator.memberLeft(mgc, false)); + this.broadcast(GuildPackets.memberLeft(mgc, false)); members.remove(mgc); bDirty = true; } finally { @@ -505,7 +505,7 @@ public class MapleGuild { while (itr.hasNext()) { mgc = itr.next(); if (mgc.getId() == cid && initiator.getGuildRank() < mgc.getGuildRank()) { - this.broadcast(PacketCreator.memberLeft(mgc, true)); + this.broadcast(GuildPackets.memberLeft(mgc, true)); itr.remove(); bDirty = true; try { @@ -568,7 +568,7 @@ public class MapleGuild { membersLock.lock(); try { - this.broadcast(PacketCreator.changeRank(mgc)); + this.broadcast(GuildPackets.changeRank(mgc)); } finally { membersLock.unlock(); } @@ -580,7 +580,7 @@ public class MapleGuild { membersLock.lock(); try { - this.broadcast(PacketCreator.guildNotice(this.id, notice)); + this.broadcast(GuildPackets.guildNotice(this.id, notice)); } finally { membersLock.unlock(); } @@ -593,7 +593,7 @@ public class MapleGuild { if (mgc.equals(member)) { member.setJobId(mgc.getJobId()); member.setLevel(mgc.getLevel()); - this.broadcast(PacketCreator.guildMemberLevelJobUpdate(mgc)); + this.broadcast(GuildPackets.guildMemberLevelJobUpdate(mgc)); break; } } @@ -624,7 +624,7 @@ public class MapleGuild { membersLock.lock(); try { - this.broadcast(PacketCreator.rankTitleChange(this.id, ranks)); + this.broadcast(GuildPackets.rankTitleChange(this.id, ranks)); } finally { membersLock.unlock(); } @@ -686,7 +686,7 @@ public class MapleGuild { membersLock.lock(); try { - this.broadcast(PacketCreator.guildCapacityChange(this.id, this.capacity)); + this.broadcast(GuildPackets.guildCapacityChange(this.id, this.capacity)); } finally { membersLock.unlock(); } @@ -697,14 +697,14 @@ public class MapleGuild { public void gainGP(int amount) { this.gp += amount; this.writeToDB(false); - this.guildMessage(PacketCreator.updateGP(this.id, this.gp)); + this.guildMessage(GuildPackets.updateGP(this.id, this.gp)); this.guildMessage(PacketCreator.getGPMessage(amount)); } public void removeGP(int amount) { this.gp -= amount; this.writeToDB(false); - this.guildMessage(PacketCreator.updateGP(this.id, this.gp)); + this.guildMessage(GuildPackets.updateGP(this.id, this.gp)); } public static MapleGuildResponse sendInvitation(MapleClient c, String targetName) { @@ -718,7 +718,7 @@ public class MapleGuild { MapleCharacter sender = c.getPlayer(); if (MapleInviteCoordinator.createInvite(InviteType.GUILD, sender, sender.getGuildId(), mc.getId())) { - mc.getClient().announce(PacketCreator.guildInvite(sender.getGuildId(), sender.getName())); + mc.sendPacket(GuildPackets.guildInvite(sender.getGuildId(), sender.getName())); return null; } else { return MapleGuildResponse.MANAGING_INVITE; @@ -743,7 +743,7 @@ public class MapleGuild { } if (mgr != null && sender != null) { - sender.announce(mgr.getPacket(targetName)); + sender.sendPacket(mgr.getPacket(targetName)); } return false; } @@ -766,7 +766,7 @@ public class MapleGuild { try (Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("SELECT `name`, `GP`, `logoBG`, `logoBGColor`, `logo`, `logoColor` FROM guilds ORDER BY `GP` DESC LIMIT 50", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = ps.executeQuery()) { - c.announce(PacketCreator.showGuildRanks(npcid, rs)); + c.sendPacket(GuildPackets.showGuildRanks(npcid, rs)); } catch (SQLException e) { e.printStackTrace(); System.out.println("failed to display guild ranks. " + e); diff --git a/src/main/java/net/server/guild/MapleGuildResponse.java b/src/main/java/net/server/guild/MapleGuildResponse.java index ec59fdba51..548ecea115 100644 --- a/src/main/java/net/server/guild/MapleGuildResponse.java +++ b/src/main/java/net/server/guild/MapleGuildResponse.java @@ -21,7 +21,7 @@ */ package net.server.guild; -import tools.PacketCreator; +import net.packet.Packet; public enum MapleGuildResponse { NOT_IN_CHANNEL(0x2a), @@ -31,17 +31,17 @@ public enum MapleGuildResponse { MANAGING_INVITE(0x36), DENIED_INVITE(0x37); - private int value; + private final int value; - private MapleGuildResponse(int val) { + MapleGuildResponse(int val) { value = val; } - public final byte[] getPacket(String targetName) { + public final Packet getPacket(String targetName) { if (value >= MANAGING_INVITE.value) { - return PacketCreator.responseGuildMessage((byte) value, targetName); + return GuildPackets.responseGuildMessage((byte) value, targetName); } else { - return PacketCreator.genericGuildMessage((byte) value); + return GuildPackets.genericGuildMessage((byte) value); } } } diff --git a/src/main/java/net/server/handlers/CustomPacketHandler.java b/src/main/java/net/server/handlers/CustomPacketHandler.java index 8d00553530..7b69f880a3 100644 --- a/src/main/java/net/server/handlers/CustomPacketHandler.java +++ b/src/main/java/net/server/handlers/CustomPacketHandler.java @@ -30,7 +30,7 @@ public class CustomPacketHandler implements MaplePacketHandler { @Override public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { if (slea.available() > 0 && c.getGMLevel() == 4) {//w/e - c.announce(PacketCreator.customPacket(slea.read((int) slea.available()))); + c.sendPacket(PacketCreator.customPacket(slea.read((int) slea.available()))); } } diff --git a/src/main/java/net/server/handlers/login/AcceptToSHandler.java b/src/main/java/net/server/handlers/login/AcceptToSHandler.java index fe3675ab5f..d6771a0cd9 100644 --- a/src/main/java/net/server/handlers/login/AcceptToSHandler.java +++ b/src/main/java/net/server/handlers/login/AcceptToSHandler.java @@ -23,9 +23,9 @@ public final class AcceptToSHandler extends AbstractMaplePacketHandler { return; } if (c.finishLogin() == 0) { - c.announce(PacketCreator.getAuthSuccess(c)); + c.sendPacket(PacketCreator.getAuthSuccess(c)); } else { - c.announce(PacketCreator.getLoginFailed(9));//shouldn't happen XD + c.sendPacket(PacketCreator.getLoginFailed(9));//shouldn't happen XD } } } diff --git a/src/main/java/net/server/handlers/login/AfterLoginHandler.java b/src/main/java/net/server/handlers/login/AfterLoginHandler.java index 0d7741bf8d..5c66d75284 100644 --- a/src/main/java/net/server/handlers/login/AfterLoginHandler.java +++ b/src/main/java/net/server/handlers/login/AfterLoginHandler.java @@ -38,23 +38,23 @@ public final class AfterLoginHandler extends AbstractMaplePacketHandler { } if (c2 == 1 && c3 == 1) { if (c.getPin() == null || c.getPin().equals("")) { - c.announce(PacketCreator.registerPin()); + c.sendPacket(PacketCreator.registerPin()); } else { - c.announce(PacketCreator.requestPin()); + c.sendPacket(PacketCreator.requestPin()); } } else if (c2 == 1 && c3 == 0) { String pin = slea.readMapleAsciiString(); if (c.checkPin(pin)) { - c.announce(PacketCreator.pinAccepted()); + c.sendPacket(PacketCreator.pinAccepted()); } else { - c.announce(PacketCreator.requestPinAfterFailure()); + c.sendPacket(PacketCreator.requestPinAfterFailure()); } } else if (c2 == 2 && c3 == 0) { String pin = slea.readMapleAsciiString(); if (c.checkPin(pin)) { - c.announce(PacketCreator.registerPin()); + c.sendPacket(PacketCreator.registerPin()); } else { - c.announce(PacketCreator.requestPinAfterFailure()); + c.sendPacket(PacketCreator.requestPinAfterFailure()); } } else if (c2 == 0 && c3 == 5) { SessionCoordinator.getInstance().closeSession(c, null); diff --git a/src/main/java/net/server/handlers/login/CharSelectedHandler.java b/src/main/java/net/server/handlers/login/CharSelectedHandler.java index eba95d5001..d39311c5ad 100644 --- a/src/main/java/net/server/handlers/login/CharSelectedHandler.java +++ b/src/main/java/net/server/handlers/login/CharSelectedHandler.java @@ -61,7 +61,7 @@ public final class CharSelectedHandler extends AbstractMaplePacketHandler { hwid = Hwid.fromHostString(hostString); } catch (IllegalArgumentException e) { log.warn("Invalid host string: {}", hostString, e); - c.announce(PacketCreator.getAfterLoginError(17)); + c.sendPacket(PacketCreator.getAfterLoginError(17)); return; } @@ -70,7 +70,7 @@ public final class CharSelectedHandler extends AbstractMaplePacketHandler { AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid); if (res != AntiMulticlientResult.SUCCESS) { - c.announce(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); + c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); return; } @@ -88,13 +88,13 @@ public final class CharSelectedHandler extends AbstractMaplePacketHandler { c.setWorld(server.getCharacterWorld(charId)); World wserv = c.getWorldServer(); if(wserv == null || wserv.isWorldCapacityFull()) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel()); if(socket == null) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -102,7 +102,7 @@ public final class CharSelectedHandler extends AbstractMaplePacketHandler { c.setCharacterOnSessionTransitionState(charId); try { - c.announce(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); } catch (UnknownHostException | NumberFormatException e) { e.printStackTrace(); } diff --git a/src/main/java/net/server/handlers/login/CharSelectedWithPicHandler.java b/src/main/java/net/server/handlers/login/CharSelectedWithPicHandler.java index 66c8842a86..c6eb13ca78 100644 --- a/src/main/java/net/server/handlers/login/CharSelectedWithPicHandler.java +++ b/src/main/java/net/server/handlers/login/CharSelectedWithPicHandler.java @@ -41,7 +41,7 @@ public class CharSelectedWithPicHandler extends AbstractMaplePacketHandler { hwid = Hwid.fromHostString(hostString); } catch (IllegalArgumentException e) { log.warn("Invalid host string: {}", hostString, e); - c.announce(PacketCreator.getAfterLoginError(17)); + c.sendPacket(PacketCreator.getAfterLoginError(17)); return; } @@ -63,19 +63,19 @@ public class CharSelectedWithPicHandler extends AbstractMaplePacketHandler { c.setWorld(server.getCharacterWorld(charId)); World wserv = c.getWorldServer(); if(wserv == null || wserv.isWorldCapacityFull()) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel()); if(socket == null) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid); if (res != AntiMulticlientResult.SUCCESS) { - c.announce(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); + c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); return; } @@ -83,12 +83,12 @@ public class CharSelectedWithPicHandler extends AbstractMaplePacketHandler { c.setCharacterOnSessionTransitionState(charId); try { - c.announce(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); } catch (UnknownHostException | NumberFormatException e) { e.printStackTrace(); } } else { - c.announce(PacketCreator.wrongPic()); + c.sendPacket(PacketCreator.wrongPic()); } } } diff --git a/src/main/java/net/server/handlers/login/CharlistRequestHandler.java b/src/main/java/net/server/handlers/login/CharlistRequestHandler.java index 99a19caada..d34c7bfa76 100644 --- a/src/main/java/net/server/handlers/login/CharlistRequestHandler.java +++ b/src/main/java/net/server/handlers/login/CharlistRequestHandler.java @@ -38,14 +38,14 @@ public final class CharlistRequestHandler extends AbstractMaplePacketHandler { World wserv = Server.getInstance().getWorld(world); if(wserv == null || wserv.isWorldCapacityFull()) { - c.announce(PacketCreator.getServerStatus(2)); + c.sendPacket(PacketCreator.getServerStatus(2)); return; } int channel = slea.readByte() + 1; Channel ch = wserv.getChannel(channel); if(ch == null) { - c.announce(PacketCreator.getServerStatus(2)); + c.sendPacket(PacketCreator.getServerStatus(2)); return; } diff --git a/src/main/java/net/server/handlers/login/CheckCharNameHandler.java b/src/main/java/net/server/handlers/login/CheckCharNameHandler.java index b1ff02223a..696c236516 100644 --- a/src/main/java/net/server/handlers/login/CheckCharNameHandler.java +++ b/src/main/java/net/server/handlers/login/CheckCharNameHandler.java @@ -32,6 +32,6 @@ public final class CheckCharNameHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { String name = slea.readMapleAsciiString(); - c.announce(PacketCreator.charNameResponse(name, !MapleCharacter.canCreateChar(name))); + c.sendPacket(PacketCreator.charNameResponse(name, !MapleCharacter.canCreateChar(name))); } } diff --git a/src/main/java/net/server/handlers/login/CreateCharHandler.java b/src/main/java/net/server/handlers/login/CreateCharHandler.java index cce3a4c801..6c3c13f4aa 100644 --- a/src/main/java/net/server/handlers/login/CreateCharHandler.java +++ b/src/main/java/net/server/handlers/login/CreateCharHandler.java @@ -84,12 +84,12 @@ public final class CreateCharHandler extends AbstractMaplePacketHandler { } else if (job == 2) { // Aran status = LegendCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender); } else { - c.announce(PacketCreator.deleteCharResponse(0, 9)); + c.sendPacket(PacketCreator.deleteCharResponse(0, 9)); return; } if (status == -2) { - c.announce(PacketCreator.deleteCharResponse(0, 9)); + c.sendPacket(PacketCreator.deleteCharResponse(0, 9)); } } } \ No newline at end of file diff --git a/src/main/java/net/server/handlers/login/DeleteCharHandler.java b/src/main/java/net/server/handlers/login/DeleteCharHandler.java index 3ad6485439..e1f5626825 100644 --- a/src/main/java/net/server/handlers/login/DeleteCharHandler.java +++ b/src/main/java/net/server/handlers/login/DeleteCharHandler.java @@ -57,12 +57,12 @@ public final class DeleteCharHandler extends AbstractMaplePacketHandler { int guildRank = rs.getInt("guildrank"); int familyId = rs.getInt("familyId"); if (guildId != 0 && guildRank <= 1) { - c.announce(PacketCreator.deleteCharResponse(cid, 0x16)); + c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x16)); return; } else if (familyId != -1) { MapleFamily family = Server.getInstance().getWorld(world).getFamily(familyId); if (family != null && family.getTotalMembers() > 1) { - c.announce(PacketCreator.deleteCharResponse(cid, 0x1D)); + c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1D)); return; } } @@ -72,23 +72,23 @@ public final class DeleteCharHandler extends AbstractMaplePacketHandler { try (ResultSet rs = ps2.executeQuery()) { rs.next(); if (rs.getInt("rowcount") > 0) { - c.announce(PacketCreator.deleteCharResponse(cid, 0x1A)); + c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1A)); return; } } } catch (SQLException e) { e.printStackTrace(); - c.announce(PacketCreator.deleteCharResponse(cid, 0x09)); + c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09)); return; } if (c.deleteCharacter(cid, c.getAccID())) { FilePrinter.print(FilePrinter.DELETED_CHAR + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid); - c.announce(PacketCreator.deleteCharResponse(cid, 0)); + c.sendPacket(PacketCreator.deleteCharResponse(cid, 0)); } else { - c.announce(PacketCreator.deleteCharResponse(cid, 0x09)); + c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09)); } } else { - c.announce(PacketCreator.deleteCharResponse(cid, 0x14)); + c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x14)); } } } diff --git a/src/main/java/net/server/handlers/login/GuestLoginHandler.java b/src/main/java/net/server/handlers/login/GuestLoginHandler.java index 9aede70d00..09979eee8f 100644 --- a/src/main/java/net/server/handlers/login/GuestLoginHandler.java +++ b/src/main/java/net/server/handlers/login/GuestLoginHandler.java @@ -33,7 +33,7 @@ public final class GuestLoginHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - c.announce(PacketCreator.sendGuestTOS()); + c.sendPacket(PacketCreator.sendGuestTOS()); //System.out.println(slea.toString()); new LoginPasswordHandler().handlePacket(slea, c); } diff --git a/src/main/java/net/server/handlers/login/LoginPasswordHandler.java b/src/main/java/net/server/handlers/login/LoginPasswordHandler.java index af94075058..31594ac886 100644 --- a/src/main/java/net/server/handlers/login/LoginPasswordHandler.java +++ b/src/main/java/net/server/handlers/login/LoginPasswordHandler.java @@ -57,7 +57,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { String remoteHost = c.getRemoteAddress(); if (remoteHost.contentEquals("null")) { - c.announce(PacketCreator.getLoginFailed(14)); // thanks Alchemist for noting remoteHost could be null + c.sendPacket(PacketCreator.getLoginFailed(14)); // thanks Alchemist for noting remoteHost could be null return; } @@ -106,33 +106,33 @@ public final class LoginPasswordHandler implements MaplePacketHandler { } if (c.hasBannedIP() || c.hasBannedMac()) { - c.announce(PacketCreator.getLoginFailed(3)); + c.sendPacket(PacketCreator.getLoginFailed(3)); return; } Calendar tempban = c.getTempBanCalendarFromDB(); if (tempban != null) { if (tempban.getTimeInMillis() > Calendar.getInstance().getTimeInMillis()) { - c.announce(PacketCreator.getTempBan(tempban.getTimeInMillis(), c.getGReason())); + c.sendPacket(PacketCreator.getTempBan(tempban.getTimeInMillis(), c.getGReason())); return; } } if (loginok == 3) { - c.announce(PacketCreator.getPermBan(c.getGReason()));//crashes but idc :D + c.sendPacket(PacketCreator.getPermBan(c.getGReason()));//crashes but idc :D return; } else if (loginok != 0) { - c.announce(PacketCreator.getLoginFailed(loginok)); + c.sendPacket(PacketCreator.getLoginFailed(loginok)); return; } if (c.finishLogin() == 0) { c.checkChar(c.getAccID()); login(c); } else { - c.announce(PacketCreator.getLoginFailed(7)); + c.sendPacket(PacketCreator.getLoginFailed(7)); } } private static void login(MapleClient c) { - c.announce(PacketCreator.getAuthSuccess(c));//why the fk did I do c.getAccountName()? + c.sendPacket(PacketCreator.getAuthSuccess(c));//why the fk did I do c.getAccountName()? Server.getInstance().registerLoginState(c); } } diff --git a/src/main/java/net/server/handlers/login/RegisterPicHandler.java b/src/main/java/net/server/handlers/login/RegisterPicHandler.java index 1442cb50e6..de7c850d60 100644 --- a/src/main/java/net/server/handlers/login/RegisterPicHandler.java +++ b/src/main/java/net/server/handlers/login/RegisterPicHandler.java @@ -41,7 +41,7 @@ public final class RegisterPicHandler extends AbstractMaplePacketHandler { hwid = Hwid.fromHostString(hostString); } catch (IllegalArgumentException e) { log.warn("Invalid host string: {}", hostString, e); - c.announce(PacketCreator.getAfterLoginError(17)); + c.sendPacket(PacketCreator.getAfterLoginError(17)); return; } @@ -50,7 +50,7 @@ public final class RegisterPicHandler extends AbstractMaplePacketHandler { AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid); if (res != AntiMulticlientResult.SUCCESS) { - c.announce(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); + c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); return; } @@ -72,13 +72,13 @@ public final class RegisterPicHandler extends AbstractMaplePacketHandler { c.setWorld(server.getCharacterWorld(charId)); World wserv = c.getWorldServer(); if(wserv == null || wserv.isWorldCapacityFull()) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel()); if(socket == null) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -86,7 +86,7 @@ public final class RegisterPicHandler extends AbstractMaplePacketHandler { c.setCharacterOnSessionTransitionState(charId); try { - c.announce(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); } catch (UnknownHostException e) { e.printStackTrace(); } diff --git a/src/main/java/net/server/handlers/login/RegisterPinHandler.java b/src/main/java/net/server/handlers/login/RegisterPinHandler.java index 4c56774765..1caa92af07 100644 --- a/src/main/java/net/server/handlers/login/RegisterPinHandler.java +++ b/src/main/java/net/server/handlers/login/RegisterPinHandler.java @@ -41,7 +41,7 @@ public final class RegisterPinHandler extends AbstractMaplePacketHandler { String pin = slea.readMapleAsciiString(); if (pin != null) { c.setPin(pin); - c.announce(PacketCreator.pinRegistered()); + c.sendPacket(PacketCreator.pinRegistered()); SessionCoordinator.getInstance().closeSession(c, null); c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN); diff --git a/src/main/java/net/server/handlers/login/RelogRequestHandler.java b/src/main/java/net/server/handlers/login/RelogRequestHandler.java index 1f50df5dea..4a5a0c2a8d 100644 --- a/src/main/java/net/server/handlers/login/RelogRequestHandler.java +++ b/src/main/java/net/server/handlers/login/RelogRequestHandler.java @@ -34,6 +34,6 @@ public final class RelogRequestHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - c.announce(PacketCreator.getRelogResponse()); + c.sendPacket(PacketCreator.getRelogResponse()); } } diff --git a/src/main/java/net/server/handlers/login/ServerStatusRequestHandler.java b/src/main/java/net/server/handlers/login/ServerStatusRequestHandler.java index ad72f23dbe..fe0588600c 100644 --- a/src/main/java/net/server/handlers/login/ServerStatusRequestHandler.java +++ b/src/main/java/net/server/handlers/login/ServerStatusRequestHandler.java @@ -36,9 +36,9 @@ public final class ServerStatusRequestHandler extends AbstractMaplePacketHandler World wserv = Server.getInstance().getWorld(world); if(wserv != null) { int status = wserv.getWorldCapacityStatus(); - c.announce(PacketCreator.getServerStatus(status)); + c.sendPacket(PacketCreator.getServerStatus(status)); } else { - c.announce(PacketCreator.getServerStatus(2)); + c.sendPacket(PacketCreator.getServerStatus(2)); } } } diff --git a/src/main/java/net/server/handlers/login/ServerlistRequestHandler.java b/src/main/java/net/server/handlers/login/ServerlistRequestHandler.java index bf1b7501b6..b71fb74062 100644 --- a/src/main/java/net/server/handlers/login/ServerlistRequestHandler.java +++ b/src/main/java/net/server/handlers/login/ServerlistRequestHandler.java @@ -40,10 +40,10 @@ public final class ServerlistRequestHandler extends AbstractMaplePacketHandler { c.requestedServerlist(worlds.size()); for (World world : worlds) { - c.announce(PacketCreator.getServerList(world.getId(), GameConstants.WORLD_NAMES[world.getId()], world.getFlag(), world.getEventMessage(), world.getChannels())); + c.sendPacket(PacketCreator.getServerList(world.getId(), GameConstants.WORLD_NAMES[world.getId()], world.getFlag(), world.getEventMessage(), world.getChannels())); } - c.announce(PacketCreator.getEndOfServerList()); - c.announce(PacketCreator.selectWorld(0));//too lazy to make a check lol - c.announce(PacketCreator.sendRecommended(server.worldRecommendedList())); + c.sendPacket(PacketCreator.getEndOfServerList()); + c.sendPacket(PacketCreator.selectWorld(0));//too lazy to make a check lol + c.sendPacket(PacketCreator.sendRecommended(server.worldRecommendedList())); } } \ No newline at end of file diff --git a/src/main/java/net/server/handlers/login/SetGenderHandler.java b/src/main/java/net/server/handlers/login/SetGenderHandler.java index 4465f3c3e8..548a302611 100644 --- a/src/main/java/net/server/handlers/login/SetGenderHandler.java +++ b/src/main/java/net/server/handlers/login/SetGenderHandler.java @@ -40,7 +40,7 @@ public class SetGenderHandler extends AbstractMaplePacketHandler { byte confirmed = slea.readByte(); if (confirmed == 0x01) { c.setGender(slea.readByte()); - c.announce(PacketCreator.getAuthSuccess(c)); + c.sendPacket(PacketCreator.getAuthSuccess(c)); Server.getInstance().registerLoginState(c); } else { diff --git a/src/main/java/net/server/handlers/login/ViewAllCharHandler.java b/src/main/java/net/server/handlers/login/ViewAllCharHandler.java index b8f0bcd39e..a31ea3fe3a 100644 --- a/src/main/java/net/server/handlers/login/ViewAllCharHandler.java +++ b/src/main/java/net/server/handlers/login/ViewAllCharHandler.java @@ -37,7 +37,7 @@ public final class ViewAllCharHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { try { if(!c.canRequestCharlist()) { // client breaks if the charlist request pops too soon - c.announce(PacketCreator.showAllCharacter(0, 0)); + c.sendPacket(PacketCreator.showAllCharacter(0, 0)); return; } @@ -62,10 +62,10 @@ public final class ViewAllCharHandler extends AbstractMaplePacketHandler { int charsSize = chrTotal; int unk = charsSize + (3 - charsSize % 3); //rowSize? - c.announce(PacketCreator.showAllCharacter(charsSize, unk)); + c.sendPacket(PacketCreator.showAllCharacter(charsSize, unk)); for (Pair> wchars : worldChars) { - c.announce(PacketCreator.showAllCharacterInfo(wchars.getLeft(), wchars.getRight(), YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic())); + c.sendPacket(PacketCreator.showAllCharacterInfo(wchars.getLeft(), wchars.getRight(), YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic())); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/net/server/handlers/login/ViewAllCharRegisterPicHandler.java b/src/main/java/net/server/handlers/login/ViewAllCharRegisterPicHandler.java index a7bde1be57..a4ee26afa5 100644 --- a/src/main/java/net/server/handlers/login/ViewAllCharRegisterPicHandler.java +++ b/src/main/java/net/server/handlers/login/ViewAllCharRegisterPicHandler.java @@ -43,7 +43,7 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand hwid = Hwid.fromHostString(hostString); } catch (IllegalArgumentException e) { log.warn("Invalid host string: {}", hostString, e); - c.announce(PacketCreator.getAfterLoginError(17)); + c.sendPacket(PacketCreator.getAfterLoginError(17)); return; } @@ -57,7 +57,7 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid); if (res != AntiMulticlientResult.SUCCESS) { - c.announce(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); + c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); return; } @@ -70,7 +70,7 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand c.setWorld(server.getCharacterWorld(charId)); World wserv = c.getWorldServer(); if(wserv == null || wserv.isWorldCapacityFull()) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -82,7 +82,7 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand String[] socket = server.getInetSocket(c, c.getWorld(), channel); if (socket == null) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -90,7 +90,7 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand c.setCharacterOnSessionTransitionState(charId); try { - c.announce(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); } catch (UnknownHostException e) { e.printStackTrace(); } diff --git a/src/main/java/net/server/handlers/login/ViewAllCharSelectedHandler.java b/src/main/java/net/server/handlers/login/ViewAllCharSelectedHandler.java index 24476b5562..8320ff5681 100644 --- a/src/main/java/net/server/handlers/login/ViewAllCharSelectedHandler.java +++ b/src/main/java/net/server/handlers/login/ViewAllCharSelectedHandler.java @@ -63,7 +63,7 @@ public final class ViewAllCharSelectedHandler extends AbstractMaplePacketHandler hwid = Hwid.fromHostString(hostString); } catch (IllegalArgumentException e) { log.warn("Invalid host string: {}", hostString, e); - c.announce(PacketCreator.getAfterLoginError(17)); + c.sendPacket(PacketCreator.getAfterLoginError(17)); return; } @@ -77,7 +77,7 @@ public final class ViewAllCharSelectedHandler extends AbstractMaplePacketHandler AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid); if (res != AntiMulticlientResult.SUCCESS) { - c.announce(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); + c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); return; } @@ -91,7 +91,7 @@ public final class ViewAllCharSelectedHandler extends AbstractMaplePacketHandler World wserv = c.getWorldServer(); if(wserv == null || wserv.isWorldCapacityFull()) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -105,7 +105,7 @@ public final class ViewAllCharSelectedHandler extends AbstractMaplePacketHandler String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel()); if(socket == null) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -113,7 +113,7 @@ public final class ViewAllCharSelectedHandler extends AbstractMaplePacketHandler c.setCharacterOnSessionTransitionState(charId); try { - c.announce(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); } catch (UnknownHostException e) { e.printStackTrace(); } diff --git a/src/main/java/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java b/src/main/java/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java index 599bf9f90e..8dfeb6cac3 100644 --- a/src/main/java/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java +++ b/src/main/java/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java @@ -44,7 +44,7 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandle hwid = Hwid.fromHostString(hostString); } catch (IllegalArgumentException e) { log.warn("Invalid host string: {}", hostString, e); - c.announce(PacketCreator.getAfterLoginError(17)); + c.sendPacket(PacketCreator.getAfterLoginError(17)); return; } @@ -65,7 +65,7 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandle c.setWorld(server.getCharacterWorld(charId)); World wserv = c.getWorldServer(); if(wserv == null || wserv.isWorldCapacityFull()) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } @@ -75,13 +75,13 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandle if (c.checkPic(pic)) { String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel()); if(socket == null) { - c.announce(PacketCreator.getAfterLoginError(10)); + c.sendPacket(PacketCreator.getAfterLoginError(10)); return; } AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid); if (res != AntiMulticlientResult.SUCCESS) { - c.announce(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); + c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res))); return; } @@ -89,13 +89,13 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandle c.setCharacterOnSessionTransitionState(charId); try { - c.announce(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); } catch (UnknownHostException e) { e.printStackTrace(); } } else { - c.announce(PacketCreator.wrongPic()); + c.sendPacket(PacketCreator.wrongPic()); } } } diff --git a/src/main/java/net/server/world/MapleParty.java b/src/main/java/net/server/world/MapleParty.java index 20091c40b4..e9a05766ea 100644 --- a/src/main/java/net/server/world/MapleParty.java +++ b/src/main/java/net/server/world/MapleParty.java @@ -330,7 +330,7 @@ public class MapleParty { MapleParty party = player.getParty(); if (party == null) { if (player.getLevel() < 10 && !YamlConfig.config.server.USE_PARTY_FOR_STARTERS) { - player.announce(PacketCreator.partyStatusMessage(10)); + player.sendPacket(PacketCreator.partyStatusMessage(10)); return false; } else if (player.getAriantColiseum() != null) { player.dropMessage(5, "You cannot request a party creation while participating the Ariant Battle Arena."); @@ -347,12 +347,12 @@ public class MapleParty { player.updatePartySearchAvailability(false); player.partyOperationUpdate(party, null); - player.announce(PacketCreator.partyCreated(party, partyplayer.getId())); + player.sendPacket(PacketCreator.partyCreated(party, partyplayer.getId())); return true; } else { if (!silentCheck) { - player.announce(PacketCreator.partyStatusMessage(16)); + player.sendPacket(PacketCreator.partyStatusMessage(16)); } return false; @@ -380,15 +380,15 @@ public class MapleParty { return true; } else { if (!silentCheck) { - player.announce(PacketCreator.partyStatusMessage(17)); + player.sendPacket(PacketCreator.partyStatusMessage(17)); } } } else { - player.announce(PacketCreator.serverNotice(5, "You couldn't join the party since it had already been disbanded.")); + player.sendPacket(PacketCreator.serverNotice(5, "You couldn't join the party since it had already been disbanded.")); } } else { if (!silentCheck) { - player.announce(PacketCreator.serverNotice(5, "You can't join the party as you are already in one.")); + player.sendPacket(PacketCreator.serverNotice(5, "You can't join the party as you are already in one.")); } } diff --git a/src/main/java/net/server/world/World.java b/src/main/java/net/server/world/World.java index d7e086c212..b51562a0ec 100644 --- a/src/main/java/net/server/world/World.java +++ b/src/main/java/net/server/world/World.java @@ -29,6 +29,7 @@ import client.MapleCharacter; import client.MapleFamily; import config.YamlConfig; import constants.game.GameConstants; +import net.packet.Packet; import net.server.PlayerStorage; import net.server.Server; import net.server.audit.LockCollector; @@ -43,6 +44,7 @@ import net.server.coordinator.partysearch.MaplePartySearchCoordinator; import net.server.coordinator.world.MapleInviteCoordinator; import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.guild.GuildPackets; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; import net.server.guild.MapleGuildSummary; @@ -675,10 +677,10 @@ public class World { if (mc.isLoggedinWorld()) { MapleGuild guild = Server.getInstance().getGuild(guildid); if (guild != null) { - mc.getMap().broadcastMessage(mc, PacketCreator.guildNameChanged(cid, guild.getName())); - mc.getMap().broadcastMessage(mc, PacketCreator.guildMarkChanged(cid, guild)); + mc.getMap().broadcastPacket(mc, GuildPackets.guildNameChanged(cid, guild.getName())); + mc.getMap().broadcastPacket(mc, GuildPackets.guildMarkChanged(cid, guild)); } else { - mc.getMap().broadcastMessage(mc, PacketCreator.guildNameChanged(cid, "")); + mc.getMap().broadcastPacket(mc, GuildPackets.guildNameChanged(cid, "")); } } } @@ -686,11 +688,11 @@ public class World { public void changeEmblem(int gid, List affectedPlayers, MapleGuildSummary mgs) { updateGuildSummary(gid, mgs); - sendPacket(affectedPlayers, PacketCreator.guildEmblemChange(gid, mgs.getLogoBG(), mgs.getLogoBGColor(), mgs.getLogo(), mgs.getLogoColor()), -1); + sendPacket(affectedPlayers, GuildPackets.guildEmblemChange(gid, mgs.getLogoBG(), mgs.getLogoBGColor(), mgs.getLogo(), mgs.getLogoColor()), -1); setGuildAndRank(affectedPlayers, -1, -1, -1); //respawn player } - public void sendPacket(List targetIds, final byte[] packet, int exception) { + public void sendPacket(List targetIds, Packet packet, int exception) { MapleCharacter chr; for (int i : targetIds) { if (i == exception) { @@ -698,7 +700,7 @@ public class World { } chr = getPlayerStorage().getCharacterById(i); if (chr != null) { - chr.getClient().announce(packet); + chr.sendPacket(packet); } } } @@ -911,7 +913,7 @@ public class World { chr.setParty(party); chr.setMPC(partychar); } - chr.announce(PacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); + chr.sendPacket(PacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); } } switch (operation) { @@ -919,7 +921,7 @@ public class World { case EXPEL: MapleCharacter chr = getPlayerStorage().getCharacterById(target.getId()); if (chr != null) { - chr.announce(PacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); + chr.sendPacket(PacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); chr.setParty(null); chr.setMPC(null); } @@ -1014,7 +1016,7 @@ public class World { if (!(partychar.getName().equals(namefrom))) { MapleCharacter chr = getPlayerStorage().getCharacterByName(partychar.getName()); if (chr != null) { - chr.getClient().announce(PacketCreator.multiChat(namefrom, chattext, 1)); + chr.sendPacket(PacketCreator.multiChat(namefrom, chattext, 1)); } } } @@ -1026,7 +1028,7 @@ public class World { MapleCharacter chr = playerStorage.getCharacterById(characterId); if (chr != null) { if (chr.getBuddylist().containsVisible(cidFrom)) { - chr.getClient().announce(PacketCreator.multiChat(nameFrom, chattext, 0)); + chr.sendPacket(PacketCreator.multiChat(nameFrom, chattext, 0)); } } } @@ -1065,15 +1067,15 @@ public class World { MapleCharacter from = getChannel(fromchannel).getPlayerStorage().getCharacterByName(sender); if (from != null) { if (MapleInviteCoordinator.createInvite(InviteType.MESSENGER, from, messengerid, targetChr.getId())) { - targetChr.getClient().announce(PacketCreator.messengerInvite(sender, messengerid)); - from.getClient().announce(PacketCreator.messengerNote(target, 4, 1)); + targetChr.sendPacket(PacketCreator.messengerInvite(sender, messengerid)); + from.sendPacket(PacketCreator.messengerNote(target, 4, 1)); } else { - from.announce(PacketCreator.messengerChat(sender + " : " + target + " is already managing a Maple Messenger invitation")); + from.sendPacket(PacketCreator.messengerChat(sender + " : " + target + " is already managing a Maple Messenger invitation")); } } } else { MapleCharacter from = getChannel(fromchannel).getPlayerStorage().getCharacterByName(sender); - from.getClient().announce(PacketCreator.messengerChat(sender + " : " + target + " is already using Maple Messenger")); + from.sendPacket(PacketCreator.messengerChat(sender + " : " + target + " is already using Maple Messenger")); } } } @@ -1087,10 +1089,10 @@ public class World { } if (!messengerchar.getName().equals(namefrom)) { MapleCharacter from = getChannel(fromchannel).getPlayerStorage().getCharacterByName(namefrom); - chr.getClient().announce(PacketCreator.addMessengerPlayer(namefrom, from, position, (byte) (fromchannel - 1))); - from.getClient().announce(PacketCreator.addMessengerPlayer(chr.getName(), chr, messengerchar.getPosition(), (byte) (messengerchar.getChannel() - 1))); + chr.sendPacket(PacketCreator.addMessengerPlayer(namefrom, from, position, (byte) (fromchannel - 1))); + from.sendPacket(PacketCreator.addMessengerPlayer(chr.getName(), chr, messengerchar.getPosition(), (byte) (messengerchar.getChannel() - 1))); } else { - chr.getClient().announce(PacketCreator.joinMessenger(messengerchar.getPosition())); + chr.sendPacket(PacketCreator.joinMessenger(messengerchar.getPosition())); } } } @@ -1099,7 +1101,7 @@ public class World { for (MapleMessengerCharacter messengerchar : messenger.getMembers()) { MapleCharacter chr = getPlayerStorage().getCharacterByName(messengerchar.getName()); if (chr != null) { - chr.getClient().announce(PacketCreator.removeMessengerPlayer(position)); + chr.sendPacket(PacketCreator.removeMessengerPlayer(position)); } } } @@ -1112,7 +1114,7 @@ public class World { if (!(messengerchar.getName().equals(namefrom))) { MapleCharacter chr = getPlayerStorage().getCharacterByName(messengerchar.getName()); if (chr != null) { - chr.getClient().announce(PacketCreator.messengerChat(chattext)); + chr.sendPacket(PacketCreator.messengerChat(chattext)); if (to1.equals("")){ to1 = messengerchar.getName(); } else if (to2.equals("")){ @@ -1130,7 +1132,7 @@ public class World { MapleCharacter senderChr = getPlayerStorage().getCharacterByName(sender); if (senderChr != null && senderChr.getMessenger() != null) { if (MapleInviteCoordinator.answerInvite(InviteType.MESSENGER, player.getId(), senderChr.getMessenger().getId(), false).result == InviteResult.DENIED) { - senderChr.getClient().announce(PacketCreator.messengerNote(player.getName(), 5, 0)); + senderChr.sendPacket(PacketCreator.messengerNote(player.getName(), 5, 0)); } } } @@ -1148,7 +1150,7 @@ public class World { if (!(messengerchar.getName().equals(namefrom))) { MapleCharacter chr = ch.getPlayerStorage().getCharacterByName(messengerchar.getName()); if (chr != null) { - chr.getClient().announce(PacketCreator.updateMessengerPlayer(namefrom, getChannel(fromchannel).getPlayerStorage().getCharacterByName(namefrom), position, (byte) (fromchannel - 1))); + chr.sendPacket(PacketCreator.updateMessengerPlayer(namefrom, getChannel(fromchannel).getPlayerStorage().getCharacterByName(namefrom), position, (byte) (fromchannel - 1))); } } } @@ -1214,13 +1216,13 @@ public class World { case ADDED: if (buddylist.contains(cidFrom)) { buddylist.put(new BuddylistEntry(name, "Default Group", cidFrom, channel, true)); - addChar.getClient().announce(PacketCreator.updateBuddyChannel(cidFrom, (byte) (channel - 1))); + addChar.sendPacket(PacketCreator.updateBuddyChannel(cidFrom, (byte) (channel - 1))); } break; case DELETED: if (buddylist.contains(cidFrom)) { buddylist.put(new BuddylistEntry(name, "Default Group", cidFrom, (byte) -1, buddylist.get(cidFrom).isVisible())); - addChar.getClient().announce(PacketCreator.updateBuddyChannel(cidFrom, (byte) -1)); + addChar.sendPacket(PacketCreator.updateBuddyChannel(cidFrom, (byte) -1)); } break; } @@ -1251,7 +1253,7 @@ public class World { mcChannel = (byte) (channel - 1); } chr.getBuddylist().put(ble); - chr.getClient().announce(PacketCreator.updateBuddyChannel(ble.getCharacterId(), mcChannel)); + chr.sendPacket(PacketCreator.updateBuddyChannel(ble.getCharacterId(), mcChannel)); } } } @@ -1721,7 +1723,7 @@ public class World { MapleCharacter chr = players.getCharacterById(chrid); if(chr != null && chr.isLoggedinWorld()) { - chr.announce(PacketCreator.serverMessage(chr.getClient().getChannelServer().getServerMessage())); + chr.sendPacket(PacketCreator.serverMessage(chr.getClient().getChannelServer().getServerMessage())); } } } @@ -1805,9 +1807,9 @@ public class World { } } - public void broadcastPacket(final byte[] data) { + public void broadcastPacket(Packet packet) { for (MapleCharacter chr : players.getAllCharacters()) { - chr.announce(data); + chr.sendPacket(packet); } } diff --git a/src/main/java/scripting/AbstractPlayerInteraction.java b/src/main/java/scripting/AbstractPlayerInteraction.java index dd4a972bec..e4734b8cc1 100644 --- a/src/main/java/scripting/AbstractPlayerInteraction.java +++ b/src/main/java/scripting/AbstractPlayerInteraction.java @@ -527,8 +527,8 @@ public class AbstractPlayerInteraction { getPlayer().addPet(evolved); getPlayer().getMap().broadcastMessage(c.getPlayer(), PacketCreator.showPet(c.getPlayer(), evolved, false, false), true); - c.announce(PacketCreator.petStatUpdate(c.getPlayer())); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.petStatUpdate(c.getPlayer())); + c.sendPacket(PacketCreator.enableActions()); chr.getClient().getWorldServer().registerPetHunger(chr, chr.getPetIndex(evolved)); */ @@ -635,7 +635,7 @@ public class AbstractPlayerInteraction { MapleInventoryManipulator.removeById(c, ItemConstants.getInventoryType(id), id, -quantity, true, false); } if (showMessage) { - c.announce(PacketCreator.getShowItemGain(id, quantity, true)); + c.sendPacket(PacketCreator.getShowItemGain(id, quantity, true)); } return item; @@ -650,7 +650,7 @@ public class AbstractPlayerInteraction { } public void playerMessage(int type, String message) { - c.announce(PacketCreator.serverNotice(type, message)); + c.sendPacket(PacketCreator.serverNotice(type, message)); } public void message(String message) { @@ -666,11 +666,11 @@ public class AbstractPlayerInteraction { } public void mapEffect(String path) { - c.announce(PacketCreator.mapEffect(path)); + c.sendPacket(PacketCreator.mapEffect(path)); } public void mapSound(String path) { - c.announce(PacketCreator.mapSound(path)); + c.sendPacket(PacketCreator.mapSound(path)); } public void displayAranIntro() { @@ -699,12 +699,12 @@ public class AbstractPlayerInteraction { } public void showIntro(String path) { - c.announce(PacketCreator.showIntro(path)); + c.sendPacket(PacketCreator.showIntro(path)); } public void showInfo(String path) { - c.announce(PacketCreator.showInfo(path)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.showInfo(path)); + c.sendPacket(PacketCreator.enableActions()); } public void guildMessage(int type, String message) { @@ -754,7 +754,7 @@ public class AbstractPlayerInteraction { } else { MapleInventoryManipulator.removeById(cl, ItemConstants.getInventoryType(id), id, -quantity, true, false); } - cl.announce(PacketCreator.getShowItemGain(id, quantity, true)); + cl.sendPacket(PacketCreator.getShowItemGain(id, quantity, true)); } } @@ -847,7 +847,7 @@ public class AbstractPlayerInteraction { int possesed = iv.countById(id); if (possesed > 0) { MapleInventoryManipulator.removeById(c, ItemConstants.getInventoryType(id), id, possesed, true, false); - chr.announce(PacketCreator.getShowItemGain(id, (short) -possesed, true)); + chr.sendPacket(PacketCreator.getShowItemGain(id, (short) -possesed, true)); } } } @@ -861,13 +861,13 @@ public class AbstractPlayerInteraction { int possessed = cl.getPlayer().getInventory(invType).countById(id); if (possessed > 0) { MapleInventoryManipulator.removeById(cl, ItemConstants.getInventoryType(id), id, possessed, true, false); - cl.announce(PacketCreator.getShowItemGain(id, (short) -possessed, true)); + cl.sendPacket(PacketCreator.getShowItemGain(id, (short) -possessed, true)); } if(invType == MapleInventoryType.EQUIP) { if(cl.getPlayer().getInventory(MapleInventoryType.EQUIPPED).countById(id) > 0) { MapleInventoryManipulator.removeById(cl, MapleInventoryType.EQUIPPED, id, 1, true, false); - cl.announce(PacketCreator.getShowItemGain(id, (short) -1, true)); + cl.sendPacket(PacketCreator.getShowItemGain(id, (short) -1, true)); } } } @@ -881,12 +881,12 @@ public class AbstractPlayerInteraction { } public void showInstruction(String msg, int width, int height) { - c.announce(PacketCreator.sendHint(msg, width, height)); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.sendHint(msg, width, height)); + c.sendPacket(PacketCreator.enableActions()); } public void disableMinimap() { - c.announce(PacketCreator.disableMinimap()); + c.sendPacket(PacketCreator.disableMinimap()); } public boolean isAllReactorState(final int reactorId, final int state) { @@ -904,7 +904,7 @@ public class AbstractPlayerInteraction { public void useItem(int id) { MapleItemInformationProvider.getInstance().getItemEffect(id).applyTo(c.getPlayer()); - c.announce(PacketCreator.getItemMessage(id));//Useful shet :3 + c.sendPacket(PacketCreator.getItemMessage(id));//Useful shet :3 } public void cancelItem(final int id) { @@ -924,7 +924,7 @@ public class AbstractPlayerInteraction { return; } } else if (GameConstants.isAranSkills(skillid)) { - c.announce(PacketCreator.showInfo("Effect/BasicEff.img/AranGetSkill")); + c.sendPacket(PacketCreator.showInfo("Effect/BasicEff.img/AranGetSkill")); } getPlayer().changeSkillLevel(skill, level, masterLevel, expiration); @@ -943,7 +943,7 @@ public class AbstractPlayerInteraction { final Item newItem = MapleItemInformationProvider.getInstance().getEquipById(itemid); newItem.setPosition(slot); c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).addItemFromDB(newItem); - c.announce(PacketCreator.modifyInventory(false, Collections.singletonList(new ModifyInventory(0, newItem)))); + c.sendPacket(PacketCreator.modifyInventory(false, Collections.singletonList(new ModifyInventory(0, newItem)))); } public void spawnNpc(int npcId, Point pos, MapleMap map) { @@ -974,19 +974,19 @@ public class AbstractPlayerInteraction { } public void spawnGuide() { - c.announce(PacketCreator.spawnGuide(true)); + c.sendPacket(PacketCreator.spawnGuide(true)); } public void removeGuide() { - c.announce(PacketCreator.spawnGuide(false)); + c.sendPacket(PacketCreator.spawnGuide(false)); } public void displayGuide(int num) { - c.announce(PacketCreator.showInfo("UI/tutorial.img/" + num)); + c.sendPacket(PacketCreator.showInfo("UI/tutorial.img/" + num)); } public void goDojoUp() { - c.announce(PacketCreator.dojoWarpUp()); + c.sendPacket(PacketCreator.dojoWarpUp()); } public void resetDojoEnergy() { @@ -1000,28 +1000,28 @@ public class AbstractPlayerInteraction { } public void enableActions() { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } public void showEffect(String effect){ - c.announce(PacketCreator.showEffect(effect)); + c.sendPacket(PacketCreator.showEffect(effect)); } public void dojoEnergy() { - c.announce(PacketCreator.getEnergy("energy", getPlayer().getDojoEnergy())); + c.sendPacket(PacketCreator.getEnergy("energy", getPlayer().getDojoEnergy())); } public void talkGuide(String message) { - c.announce(PacketCreator.talkGuide(message)); + c.sendPacket(PacketCreator.talkGuide(message)); } public void guideHint(int hint) { - c.announce(PacketCreator.guideHint(hint)); + c.sendPacket(PacketCreator.guideHint(hint)); } public void updateAreaInfo(Short area, String info) { c.getPlayer().updateAreaInfo(area, info); - c.announce(PacketCreator.enableActions());//idk, nexon does the same :P + c.sendPacket(PacketCreator.enableActions());//idk, nexon does the same :P } public boolean containsAreaInfo(short area, String info) { @@ -1029,25 +1029,25 @@ public class AbstractPlayerInteraction { } public void earnTitle(String msg) { - c.announce(PacketCreator.earnTitleMessage(msg)); + c.sendPacket(PacketCreator.earnTitleMessage(msg)); } public void showInfoText(String msg) { - c.announce(PacketCreator.showInfoText(msg)); + c.sendPacket(PacketCreator.showInfoText(msg)); } public void openUI(byte ui) { - c.announce(PacketCreator.openUI(ui)); + c.sendPacket(PacketCreator.openUI(ui)); } public void lockUI() { - c.announce(PacketCreator.disableUI(true)); - c.announce(PacketCreator.lockUI(true)); + c.sendPacket(PacketCreator.disableUI(true)); + c.sendPacket(PacketCreator.lockUI(true)); } public void unlockUI() { - c.announce(PacketCreator.disableUI(false)); - c.announce(PacketCreator.lockUI(false)); + c.sendPacket(PacketCreator.disableUI(false)); + c.sendPacket(PacketCreator.lockUI(false)); } public void playSound(String sound) { @@ -1183,7 +1183,7 @@ public class AbstractPlayerInteraction { } public void npcTalk(int npcid, String message) { - c.announce(PacketCreator.getNPCTalk(npcid, (byte) 0, message, "00 00", (byte) 0)); + c.sendPacket(PacketCreator.getNPCTalk(npcid, (byte) 0, message, "00 00", (byte) 0)); } public long getCurrentTime() { diff --git a/src/main/java/scripting/event/EventInstanceManager.java b/src/main/java/scripting/event/EventInstanceManager.java index 3a4e6defa8..3528da2a67 100644 --- a/src/main/java/scripting/event/EventInstanceManager.java +++ b/src/main/java/scripting/event/EventInstanceManager.java @@ -282,7 +282,7 @@ public class EventInstanceManager { eventTime = time; for(MapleCharacter chr: getPlayers()) { - chr.announce(PacketCreator.getClock((int) (time / 1000))); + chr.sendPacket(PacketCreator.getClock((int) (time / 1000))); } event_schedule = TimerManager.getInstance().schedule(() -> { @@ -295,7 +295,7 @@ public class EventInstanceManager { } }, time); } - + public void addEventTimer(long time) { if (event_schedule != null) { if (event_schedule.cancel(false)) { @@ -316,23 +316,23 @@ public class EventInstanceManager { startEventTimer(time); } } - + private void dismissEventTimer() { - for(MapleCharacter chr: getPlayers()) { - chr.getClient().announce(PacketCreator.removeClock()); + for (MapleCharacter chr : getPlayers()) { + chr.sendPacket(PacketCreator.removeClock()); } - + event_schedule = null; eventTime = 0; timeStarted = 0; } - + public void stopEventTimer() { - if(event_schedule != null) { + if (event_schedule != null) { event_schedule.cancel(false); event_schedule = null; } - + dismissEventTimer(); } @@ -1262,7 +1262,7 @@ public class EventInstanceManager { } if(gateData != null) { - chr.announce(PacketCreator.environmentChange(gateData.getLeft(), gateData.getRight())); + chr.sendPacket(PacketCreator.environmentChange(gateData.getLeft(), gateData.getRight())); } } diff --git a/src/main/java/scripting/map/MapScriptMethods.java b/src/main/java/scripting/map/MapScriptMethods.java index 6435e9dc88..65e5a0e7f2 100644 --- a/src/main/java/scripting/map/MapScriptMethods.java +++ b/src/main/java/scripting/map/MapScriptMethods.java @@ -40,26 +40,26 @@ public class MapScriptMethods extends AbstractPlayerInteraction { switch (c.getPlayer().getMapId()) { case 913040100: lockUI(); - c.announce(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene0")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene0")); break; case 913040101: - c.announce(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene1")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene1")); break; case 913040102: - c.announce(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene2")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene2")); break; case 913040103: - c.announce(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene3")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene3")); break; case 913040104: - c.announce(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene4")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene4")); break; case 913040105: - c.announce(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene5")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene5")); break; case 913040106: lockUI(); - c.announce(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene6")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene6")); break; } } @@ -68,20 +68,20 @@ public class MapScriptMethods extends AbstractPlayerInteraction { switch (c.getPlayer().getMapId()) { case 914090010: lockUI(); - c.announce(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene0")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene0")); break; case 914090011: - c.announce(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene1" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene1" + c.getPlayer().getGender())); break; case 914090012: - c.announce(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene2" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene2" + c.getPlayer().getGender())); break; case 914090013: - c.announce(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene3")); + c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene3")); break; case 914090100: lockUI(); - c.announce(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/HandedPoleArm" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/HandedPoleArm" + c.getPlayer().getGender())); break; } } @@ -89,30 +89,30 @@ public class MapScriptMethods extends AbstractPlayerInteraction { public void startExplorerExperience() { if (c.getPlayer().getMapId() == 1020100) //Swordman { - c.announce(PacketCreator.showIntro("Effect/Direction3.img/swordman/Scene" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/swordman/Scene" + c.getPlayer().getGender())); } else if (c.getPlayer().getMapId() == 1020200) //Magician { - c.announce(PacketCreator.showIntro("Effect/Direction3.img/magician/Scene" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/magician/Scene" + c.getPlayer().getGender())); } else if (c.getPlayer().getMapId() == 1020300) //Archer { - c.announce(PacketCreator.showIntro("Effect/Direction3.img/archer/Scene" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/archer/Scene" + c.getPlayer().getGender())); } else if (c.getPlayer().getMapId() == 1020400) //Rogue { - c.announce(PacketCreator.showIntro("Effect/Direction3.img/rogue/Scene" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/rogue/Scene" + c.getPlayer().getGender())); } else if (c.getPlayer().getMapId() == 1020500) //Pirate { - c.announce(PacketCreator.showIntro("Effect/Direction3.img/pirate/Scene" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/pirate/Scene" + c.getPlayer().getGender())); } } public void goAdventure() { lockUI(); - c.announce(PacketCreator.showIntro("Effect/Direction3.img/goAdventure/Scene" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/goAdventure/Scene" + c.getPlayer().getGender())); } public void goLith() { lockUI(); - c.announce(PacketCreator.showIntro("Effect/Direction3.img/goLith/Scene" + c.getPlayer().getGender())); + c.sendPacket(PacketCreator.showIntro("Effect/Direction3.img/goLith/Scene" + c.getPlayer().getGender())); } public void explorerQuest(short questid, String questName) { @@ -134,13 +134,13 @@ public class MapScriptMethods extends AbstractPlayerInteraction { if (status.equals(infoex)) { etm.append("Earned the ").append(questName).append(" title!"); smp.append("You have earned the <").append(questName).append(">").append(rewardstring); - getPlayer().announce(PacketCreator.getShowQuestCompletion(quest.getId())); + getPlayer().sendPacket(PacketCreator.getShowQuestCompletion(quest.getId())); } else { - getPlayer().announce(PacketCreator.earnTitleMessage(status + "/" + infoex + " regions explored.")); + getPlayer().sendPacket(PacketCreator.earnTitleMessage(status + "/" + infoex + " regions explored.")); etm.append("Trying for the ").append(questName).append(" title."); smp.append("You made progress on the ").append(questName).append(" title. ").append(status).append("/").append(infoex); } - getPlayer().announce(PacketCreator.earnTitleMessage(etm.toString())); + getPlayer().sendPacket(PacketCreator.earnTitleMessage(etm.toString())); showInfoText(smp.toString()); } @@ -157,11 +157,11 @@ public class MapScriptMethods extends AbstractPlayerInteraction { } String status = Integer.toString(qs.getMedalProgress()); getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); - getPlayer().announce(PacketCreator.earnTitleMessage(status + "/5 Completed")); - getPlayer().announce(PacketCreator.earnTitleMessage("The One Who's Touched the Sky title in progress.")); + getPlayer().sendPacket(PacketCreator.earnTitleMessage(status + "/5 Completed")); + getPlayer().sendPacket(PacketCreator.earnTitleMessage("The One Who's Touched the Sky title in progress.")); if (Integer.toString(qs.getMedalProgress()).equals(qs.getInfoEx(0))) { showInfoText("The One Who's Touched the Sky" + rewardstring); - getPlayer().announce(PacketCreator.getShowQuestCompletion(quest.getId())); + getPlayer().sendPacket(PacketCreator.getShowQuestCompletion(quest.getId())); } else { showInfoText("The One Who's Touched the Sky title in progress. " + status + "/5 Completed"); } diff --git a/src/main/java/scripting/npc/NPCConversationManager.java b/src/main/java/scripting/npc/NPCConversationManager.java index 07886a81fb..dbc7d4db85 100644 --- a/src/main/java/scripting/npc/NPCConversationManager.java +++ b/src/main/java/scripting/npc/NPCConversationManager.java @@ -32,6 +32,7 @@ import constants.string.LanguageConstants; import net.server.Server; import net.server.channel.Channel; import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType; +import net.server.guild.GuildPackets; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.world.MapleParty; @@ -60,7 +61,7 @@ import server.partyquest.Pyramid.PyramidMode; import tools.FilePrinter; import tools.LogHelper; import tools.PacketCreator; -import tools.packets.Wedding; +import tools.packets.WeddingPackets; import java.awt.*; import java.sql.SQLException; @@ -133,23 +134,23 @@ public class NPCConversationManager extends AbstractPlayerInteraction { public void dispose() { NPCScriptManager.getInstance().dispose(this); - getClient().announce(PacketCreator.enableActions()); + getClient().sendPacket(PacketCreator.enableActions()); } public void sendNext(String text) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", (byte) 0)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", (byte) 0)); } public void sendPrev(String text) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", (byte) 0)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", (byte) 0)); } public void sendNextPrev(String text) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", (byte) 0)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", (byte) 0)); } public void sendOk(String text) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", (byte) 0)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", (byte) 0)); } public void sendDefault() { @@ -157,48 +158,48 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public void sendYesNo(String text) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 1, text, "", (byte) 0)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 1, text, "", (byte) 0)); } public void sendAcceptDecline(String text) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", (byte) 0)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", (byte) 0)); } public void sendSimple(String text) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 4, text, "", (byte) 0)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 4, text, "", (byte) 0)); } public void sendNext(String text, byte speaker) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", speaker)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", speaker)); } public void sendPrev(String text, byte speaker) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", speaker)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", speaker)); } public void sendNextPrev(String text, byte speaker) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", speaker)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", speaker)); } public void sendOk(String text, byte speaker) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", speaker)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", speaker)); } public void sendYesNo(String text, byte speaker) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 1, text, "", speaker)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 1, text, "", speaker)); } public void sendAcceptDecline(String text, byte speaker) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", speaker)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", speaker)); } public void sendSimple(String text, byte speaker) { - getClient().announce(PacketCreator.getNPCTalk(npc, (byte) 4, text, "", speaker)); + getClient().sendPacket(PacketCreator.getNPCTalk(npc, (byte) 4, text, "", speaker)); } public void sendStyle(String text, int[] styles) { if (styles.length > 0) { - getClient().announce(PacketCreator.getNPCTalkStyle(npc, text, styles)); + getClient().sendPacket(PacketCreator.getNPCTalkStyle(npc, text, styles)); } else { // thanks Conrad for noticing empty styles crashing players sendOk("Sorry, there are no options of cosmetics available for you here at the moment."); dispose(); @@ -206,11 +207,11 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public void sendGetNumber(String text, int def, int min, int max) { - getClient().announce(PacketCreator.getNPCTalkNum(npc, text, def, min, max)); + getClient().sendPacket(PacketCreator.getNPCTalkNum(npc, text, def, min, max)); } public void sendGetText(String text) { - getClient().announce(PacketCreator.getNPCTalkText(npc, text, "")); + getClient().sendPacket(PacketCreator.getNPCTalkText(npc, text, "")); } /* @@ -223,7 +224,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { * 6 = Kerning Subway */ public void sendDimensionalMirror(String text) { - getClient().announce(PacketCreator.getDimensionalMirror(text)); + getClient().sendPacket(PacketCreator.getDimensionalMirror(text)); } public void setGetText(String text) { @@ -418,10 +419,10 @@ public class NPCConversationManager extends AbstractPlayerInteraction { MapleAlliance alliance = Server.getInstance().getAlliance(c.getPlayer().getGuild().getAllianceId()); alliance.increaseCapacity(1); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, c.getWorld()), -1, -1); - Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, c.getWorld()), -1, -1); + Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1); - c.announce(PacketCreator.updateAllianceInfo(alliance, c.getWorld())); // thanks Vcoc for finding an alliance update to leader issue + c.sendPacket(GuildPackets.updateAllianceInfo(alliance, c.getWorld())); // thanks Vcoc for finding an alliance update to leader issue } public void disbandAlliance(MapleClient c, int allianceId) { @@ -461,7 +462,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public void showFredrick() { - c.announce(PacketCreator.getFredrick(getPlayer())); + c.sendPacket(PacketCreator.getFredrick(getPlayer())); } public int partyMembersInMap() { @@ -677,7 +678,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); - mc.announce(PacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); + mc.sendPacket(PacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); TimerManager tMan = TimerManager.getInstance(); tMan.schedule(() -> mapClock(3 * 60), 1500); @@ -926,7 +927,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); - mc.announce(PacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); + mc.sendPacket(PacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); TimerManager tMan = TimerManager.getInstance(); tMan.schedule(() -> mapClock(3 * 60), 1500); @@ -1070,17 +1071,17 @@ public class NPCConversationManager extends AbstractPlayerInteraction { MapleCharacter chr = marriage.getPlayerById(cid); if (chr != null) { if (chr.getId() == player.getId()) { - player.announce(Wedding.OnWeddingGiftResult((byte) 0xA, marriage.getWishlistItems(groom), marriage.getGiftItems(player.getClient(), groom))); + player.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xA, marriage.getWishlistItems(groom), marriage.getGiftItems(player.getClient(), groom))); } else { marriage.setIntProperty("wishlistSelection", groom ? 0 : 1); - player.announce(Wedding.OnWeddingGiftResult((byte) 0x09, marriage.getWishlistItems(groom), marriage.getGiftItems(player.getClient(), groom))); + player.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0x09, marriage.getWishlistItems(groom), marriage.getGiftItems(player.getClient(), groom))); } } } } public void sendMarriageGifts(List gifts) { - this.getPlayer().announce(Wedding.OnWeddingGiftResult((byte) 0xA, Collections.singletonList(""), gifts)); + this.getPlayer().sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xA, Collections.singletonList(""), gifts)); } public boolean createMarriageWishlist() { @@ -1096,7 +1097,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } if (marriage.getProperty(wlKey).contentEquals("")) { - getClient().announce(Wedding.sendWishList()); + getClient().sendPacket(WeddingPackets.sendWishList()); return true; } } diff --git a/src/main/java/scripting/npc/NPCScriptManager.java b/src/main/java/scripting/npc/NPCScriptManager.java index 6e7408ebb1..978beada46 100644 --- a/src/main/java/scripting/npc/NPCScriptManager.java +++ b/src/main/java/scripting/npc/NPCScriptManager.java @@ -151,7 +151,7 @@ public class NPCScriptManager extends AbstractScriptManager { } } } else { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } return true; } catch (final Exception ute) { diff --git a/src/main/java/scripting/portal/PortalPlayerInteraction.java b/src/main/java/scripting/portal/PortalPlayerInteraction.java index 06e20baf5b..b6756e6c22 100644 --- a/src/main/java/scripting/portal/PortalPlayerInteraction.java +++ b/src/main/java/scripting/portal/PortalPlayerInteraction.java @@ -78,6 +78,6 @@ public class PortalPlayerInteraction extends AbstractPlayerInteraction { } public void playPortalSound() { - c.announce(PacketCreator.playPortalSound()); + c.sendPacket(PacketCreator.playPortalSound()); } } \ No newline at end of file diff --git a/src/main/java/server/MapleShop.java b/src/main/java/server/MapleShop.java index 71854b32bb..86e1ff085b 100644 --- a/src/main/java/server/MapleShop.java +++ b/src/main/java/server/MapleShop.java @@ -76,7 +76,7 @@ public class MapleShop { public void sendShop(MapleClient c) { c.getPlayer().setShop(this); - c.announce(PacketCreator.getNPCShop(c, getNpcId(), items)); + c.sendPacket(PacketCreator.getNPCShop(c, getNpcId(), items)); } public void buy(MapleClient c, short slot, int itemId, short quantity) { @@ -103,12 +103,12 @@ public class MapleShop { MapleInventoryManipulator.addById(c, itemId, quantity, "", -1); c.getPlayer().gainMeso(-item.getPrice(), false); } - c.announce(PacketCreator.shopTransaction((byte) 0)); + c.sendPacket(PacketCreator.shopTransaction((byte) 0)); } else - c.announce(PacketCreator.shopTransaction((byte) 3)); + c.sendPacket(PacketCreator.shopTransaction((byte) 3)); } else - c.announce(PacketCreator.shopTransaction((byte) 2)); + c.sendPacket(PacketCreator.shopTransaction((byte) 2)); } else if (item.getPitch() > 0) { int amount = (int)Math.min((float) item.getPitch() * quantity, Integer.MAX_VALUE); @@ -124,9 +124,9 @@ public class MapleShop { MapleInventoryManipulator.addById(c, itemId, quantity, "", -1); MapleInventoryManipulator.removeById(c, MapleInventoryType.ETC, 4310000, amount, false, false); } - c.announce(PacketCreator.shopTransaction((byte) 0)); + c.sendPacket(PacketCreator.shopTransaction((byte) 0)); } else - c.announce(PacketCreator.shopTransaction((byte) 3)); + c.sendPacket(PacketCreator.shopTransaction((byte) 3)); } } else if (c.getPlayer().getInventory(MapleInventoryType.CASH).countById(token) != 0) { @@ -145,11 +145,11 @@ public class MapleShop { } c.getPlayer().gainMeso(diff, false); } else { - c.announce(PacketCreator.shopTransaction((byte) 3)); + c.sendPacket(PacketCreator.shopTransaction((byte) 3)); } - c.announce(PacketCreator.shopTransaction((byte) 0)); + c.sendPacket(PacketCreator.shopTransaction((byte) 0)); } else { - c.announce(PacketCreator.shopTransaction((byte) 2)); + c.sendPacket(PacketCreator.shopTransaction((byte) 2)); } } } @@ -203,9 +203,9 @@ public class MapleShop { if (recvMesos > 0) { c.getPlayer().gainMeso(recvMesos, false); } - c.announce(PacketCreator.shopTransaction((byte) 0x8)); + c.sendPacket(PacketCreator.shopTransaction((byte) 0x8)); } else { - c.announce(PacketCreator.shopTransaction((byte) 0x5)); + c.sendPacket(PacketCreator.shopTransaction((byte) 0x5)); } } @@ -225,9 +225,9 @@ public class MapleShop { item.setQuantity(slotMax); c.getPlayer().forceUpdateItem(item); c.getPlayer().gainMeso(-price, false, true, false); - c.announce(PacketCreator.shopTransaction((byte) 0x8)); + c.sendPacket(PacketCreator.shopTransaction((byte) 0x8)); } else { - c.announce(PacketCreator.shopTransaction((byte) 0x2)); + c.sendPacket(PacketCreator.shopTransaction((byte) 0x2)); } } } diff --git a/src/main/java/server/MapleStatEffect.java b/src/main/java/server/MapleStatEffect.java index 673a598999..0f8d5def92 100644 --- a/src/main/java/server/MapleStatEffect.java +++ b/src/main/java/server/MapleStatEffect.java @@ -31,6 +31,7 @@ import client.status.MonsterStatusEffect; import config.YamlConfig; import constants.inventory.ItemConstants; import constants.skills.*; +import net.packet.Packet; import net.server.Server; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; @@ -826,8 +827,8 @@ public class MapleStatEffect { if (absorbMp > 0) { mob.setMp(mob.getMp() - absorbMp); applyto.addMP(absorbMp); - applyto.announce(PacketCreator.showOwnBuffEffect(sourceid, 1)); - applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffeffect(applyto.getId(), sourceid, 1), false); + applyto.sendPacket(PacketCreator.showOwnBuffEffect(sourceid, 1)); + applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffEffect(applyto.getId(), sourceid, 1), false); } } break; @@ -875,7 +876,7 @@ public class MapleStatEffect { if (primary) { if (itemConNo != 0) { if (!applyto.getAbstractPlayerInteraction().hasItem(itemCon, itemConNo)) { - applyto.announce(PacketCreator.enableActions()); + applyto.sendPacket(PacketCreator.enableActions()); return false; } MapleInventoryManipulator.removeById(applyto.getClient(), ItemConstants.getInventoryType(itemCon), itemCon, itemConNo, false, true); @@ -899,7 +900,7 @@ public class MapleStatEffect { } */ if (!applyto.applyHpMpChange(hpCon, hpchange, mpchange)) { - applyto.announce(PacketCreator.enableActions()); + applyto.sendPacket(PacketCreator.enableActions()); return false; } @@ -970,7 +971,7 @@ public class MapleStatEffect { applyto.cancelBuffStats(MapleBuffStat.SUMMON); } - applyto.announce(PacketCreator.enableActions()); + applyto.sendPacket(PacketCreator.enableActions()); } applyBuffEffect(applyfrom, applyto, primary); @@ -1108,8 +1109,8 @@ public class MapleStatEffect { affectedc += affectedp.size(); // used for heal for (MapleCharacter affected : affectedp) { applyTo(applyfrom, affected, false, null, useMaxRange, affectedc); - affected.announce(PacketCreator.showOwnBuffEffect(sourceid, 2)); - affected.getMap().broadcastMessage(affected, PacketCreator.showBuffeffect(affected.getId(), sourceid, 2), false); + affected.sendPacket(PacketCreator.showOwnBuffEffect(sourceid, 2)); + affected.getMap().broadcastMessage(affected, PacketCreator.showBuffEffect(affected.getId(), sourceid, 2), false); } } @@ -1182,7 +1183,7 @@ public class MapleStatEffect { public final void applyComboBuff(final MapleCharacter applyto, int combo) { final List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.ARAN_COMBO, combo)); - applyto.announce(PacketCreator.giveBuff(sourceid, 99999, stat)); + applyto.sendPacket(PacketCreator.giveBuff(sourceid, 99999, stat)); final long starttime = Server.getInstance().getCurrentTime(); // final CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, starttime); @@ -1192,7 +1193,7 @@ public class MapleStatEffect { public final void applyBeaconBuff(final MapleCharacter applyto, int objectid) { // thanks Thora & Hyun for reporting an issue with homing beacon autoflagging mobs when changing maps final List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.HOMING_BEACON, objectid)); - applyto.announce(PacketCreator.giveBuff(1, sourceid, stat)); + applyto.sendPacket(PacketCreator.giveBuff(1, sourceid, stat)); final long starttime = Server.getInstance().getCurrentTime(); applyto.registerEffect(this, starttime, Long.MAX_VALUE, false); @@ -1205,9 +1206,9 @@ public class MapleStatEffect { long leftDuration = (starttime + localDuration) - Server.getInstance().getCurrentTime(); if (leftDuration > 0) { if (isDash() || isInfusion()) { - target.announce(PacketCreator.givePirateBuff(activeStats, (skill ? sourceid : -sourceid), (int) leftDuration)); + target.sendPacket(PacketCreator.givePirateBuff(activeStats, (skill ? sourceid : -sourceid), (int) leftDuration)); } else { - target.announce(PacketCreator.giveBuff((skill ? sourceid : -sourceid), (int) leftDuration, activeStats)); + target.sendPacket(PacketCreator.giveBuff((skill ? sourceid : -sourceid), (int) leftDuration, activeStats)); } } } @@ -1260,11 +1261,11 @@ public class MapleStatEffect { } if (primary) { localDuration = alchemistModifyVal(applyfrom, localDuration, false); - applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffeffect(applyto.getId(), sourceid, 1, (byte) 3), false); + applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffEffect(applyto.getId(), sourceid, 1, (byte) 3), false); } if (localstatups.size() > 0) { - byte[] buff = null; - byte[] mbuff = null; + Packet buff = null; + Packet mbuff = null; if (this.isActive(applyto)) { buff = PacketCreator.giveBuff((skill ? sourceid : -sourceid), localDuration, localstatups); } @@ -1320,7 +1321,7 @@ public class MapleStatEffect { //Thanks flav for such a simple release! :) //Thanks Conrad, Atoot for noticing summons not using buff icon - applyto.announce(buff); + applyto.sendPacket(buff); } long starttime = Server.getInstance().getCurrentTime(); diff --git a/src/main/java/server/MapleStorage.java b/src/main/java/server/MapleStorage.java index 02b940d2f6..046b2ec154 100644 --- a/src/main/java/server/MapleStorage.java +++ b/src/main/java/server/MapleStorage.java @@ -227,7 +227,7 @@ public class MapleStorage { public void sendStorage(MapleClient c, int npcId) { if (c.getPlayer().getLevel() < 15){ c.getPlayer().dropMessage(1, "You may only use the storage once you have reached level 15."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -248,7 +248,7 @@ public class MapleStorage { } currentNpcid = npcId; - c.announce(PacketCreator.getStorage(npcId, slots, storageItems, meso)); + c.sendPacket(PacketCreator.getStorage(npcId, slots, storageItems, meso)); } finally { lock.unlock(); } @@ -257,7 +257,7 @@ public class MapleStorage { public void sendStored(MapleClient c, MapleInventoryType type) { lock.lock(); try { - c.announce(PacketCreator.storeStorage(slots, type, typeItems.get(type))); + c.sendPacket(PacketCreator.storeStorage(slots, type, typeItems.get(type))); } finally { lock.unlock(); } @@ -266,7 +266,7 @@ public class MapleStorage { public void sendTakenOut(MapleClient c, MapleInventoryType type) { lock.lock(); try { - c.announce(PacketCreator.takeOutStorage(slots, type, typeItems.get(type))); + c.sendPacket(PacketCreator.takeOutStorage(slots, type, typeItems.get(type))); } finally { lock.unlock(); } @@ -283,7 +283,7 @@ public class MapleStorage { typeItems.put(type, new ArrayList<>(items)); } - c.announce(PacketCreator.arrangeStorage(slots, items)); + c.sendPacket(PacketCreator.arrangeStorage(slots, items)); } finally { lock.unlock(); } @@ -301,7 +301,7 @@ public class MapleStorage { } public void sendMeso(MapleClient c) { - c.announce(PacketCreator.mesoStorage(slots, meso)); + c.sendPacket(PacketCreator.mesoStorage(slots, meso)); } public int getStoreFee() { // thanks to GabrielSin diff --git a/src/main/java/server/MapleTrade.java b/src/main/java/server/MapleTrade.java index 71ef61b8b4..7ad5d30e8e 100644 --- a/src/main/java/server/MapleTrade.java +++ b/src/main/java/server/MapleTrade.java @@ -104,7 +104,7 @@ public class MapleTrade { private void lockTrade() { locked.set(true); - partner.getChr().getClient().announce(PacketCreator.getTradeConfirmation()); + partner.getChr().sendPacket(PacketCreator.getTradeConfirmation()); } private void fetchExchangedItems() { @@ -143,7 +143,7 @@ public class MapleTrade { exchangeItems.clear(); } - chr.getClient().announce(PacketCreator.getTradeResult(number, result)); + chr.sendPacket(PacketCreator.getTradeResult(number, result)); } private void cancel(byte result) { @@ -164,7 +164,7 @@ public class MapleTrade { exchangeItems.clear(); } - chr.getClient().announce(PacketCreator.getTradeResult(number, result)); + chr.sendPacket(PacketCreator.getTradeResult(number, result)); } private boolean isLocked() { @@ -186,9 +186,9 @@ public class MapleTrade { if (chr.getMeso() >= meso) { chr.gainMeso(-meso, false, true, false); this.meso += meso; - chr.getClient().announce(PacketCreator.getTradeMesoSet((byte) 0, this.meso)); + chr.sendPacket(PacketCreator.getTradeMesoSet((byte) 0, this.meso)); if (partner != null) { - partner.getChr().getClient().announce(PacketCreator.getTradeMesoSet((byte) 1, this.meso)); + partner.getChr().sendPacket(PacketCreator.getTradeMesoSet((byte) 1, this.meso)); } } else { } @@ -212,9 +212,9 @@ public class MapleTrade { } public void chat(String message) { - chr.getClient().announce(PacketCreator.getTradeChat(chr, message, true)); + chr.sendPacket(PacketCreator.getTradeChat(chr, message, true)); if (partner != null) { - partner.getChr().getClient().announce(PacketCreator.getTradeChat(chr, message, false)); + partner.getChr().sendPacket(PacketCreator.getTradeChat(chr, message, false)); } } @@ -334,7 +334,7 @@ public class MapleTrade { if (local.getChr().getLevel() < 15) { if (local.getChr().getMesosTraded() + local.exchangeMeso > 1000000) { cancelTrade(local.getChr(), TradeResult.NO_RESPONSE); - local.getChr().getClient().announce(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day.")); + local.getChr().sendPacket(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day.")); return; } else { local.getChr().addMesosTraded(local.exchangeMeso); @@ -342,7 +342,7 @@ public class MapleTrade { } else if (partner.getChr().getLevel() < 15) { if (partner.getChr().getMesosTraded() + partner.exchangeMeso > 1000000) { cancelTrade(partner.getChr(), TradeResult.NO_RESPONSE); - partner.getChr().getClient().announce(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day.")); + partner.getChr().sendPacket(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day.")); return; } else { partner.getChr().addMesosTraded(partner.exchangeMeso); @@ -463,8 +463,8 @@ public class MapleTrade { c2.getTrade().setPartner(c1.getTrade()); c1.getTrade().setPartner(c2.getTrade()); - c1.getClient().announce(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 0)); - c2.getClient().announce(PacketCreator.tradeInvite(c1)); + c1.sendPacket(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 0)); + c2.sendPacket(PacketCreator.tradeInvite(c1)); } else { c1.message("The other player is already trading with someone else."); cancelTrade(c1, TradeResult.NO_RESPONSE); @@ -482,8 +482,8 @@ public class MapleTrade { InviteResult res = inviteRes.result; if (res == InviteResult.ACCEPTED) { if (c1.getTrade() != null && c1.getTrade().getPartner() == c2.getTrade() && c2.getTrade() != null && c2.getTrade().getPartner() == c1.getTrade()) { - c2.getClient().announce(PacketCreator.getTradePartnerAdd(c1)); - c1.getClient().announce(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 1)); + c2.sendPacket(PacketCreator.getTradePartnerAdd(c1)); + c1.sendPacket(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 1)); c1.getTrade().setFullTrade(true); c2.getTrade().setFullTrade(true); } else { diff --git a/src/main/java/server/events/gm/MapleCoconut.java b/src/main/java/server/events/gm/MapleCoconut.java index 36cabad1d1..46ef960819 100644 --- a/src/main/java/server/events/gm/MapleCoconut.java +++ b/src/main/java/server/events/gm/MapleCoconut.java @@ -66,22 +66,22 @@ public class MapleCoconut extends MapleEvent { } else if (getMapleScore() > getStoryScore()) { for (MapleCharacter chr : map.getCharacters()) { if (chr.getTeam() == 0) { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Victory")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/victory")); + chr.sendPacket(PacketCreator.playSound("Coconut/Victory")); } else { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Failed")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/lose")); + chr.sendPacket(PacketCreator.playSound("Coconut/Failed")); } } warpOut(); } else { for (MapleCharacter chr : map.getCharacters()) { if (chr.getTeam() == 1) { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Victory")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/victory")); + chr.sendPacket(PacketCreator.playSound("Coconut/Victory")); } else { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Failed")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/lose")); + chr.sendPacket(PacketCreator.playSound("Coconut/Failed")); } } warpOut(); @@ -95,29 +95,29 @@ public class MapleCoconut extends MapleEvent { TimerManager.getInstance().schedule(() -> { if (getMapleScore() == getStoryScore()) { for (MapleCharacter chr : map.getCharacters()) { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Failed")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/lose")); + chr.sendPacket(PacketCreator.playSound("Coconut/Failed")); } warpOut(); } else if (getMapleScore() > getStoryScore()) { for (MapleCharacter chr : map.getCharacters()) { if (chr.getTeam() == 0) { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Victory")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/victory")); + chr.sendPacket(PacketCreator.playSound("Coconut/Victory")); } else { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Failed")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/lose")); + chr.sendPacket(PacketCreator.playSound("Coconut/Failed")); } } warpOut(); } else { for (MapleCharacter chr : map.getCharacters()) { if (chr.getTeam() == 1) { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Victory")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/victory")); + chr.sendPacket(PacketCreator.playSound("Coconut/Victory")); } else { - chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose")); - chr.getClient().announce(PacketCreator.playSound("Coconut/Failed")); + chr.sendPacket(PacketCreator.showEffect("event/coconut/lose")); + chr.sendPacket(PacketCreator.playSound("Coconut/Failed")); } } warpOut(); diff --git a/src/main/java/server/events/gm/MapleFitness.java b/src/main/java/server/events/gm/MapleFitness.java index 54eaa554a1..058d9ee057 100644 --- a/src/main/java/server/events/gm/MapleFitness.java +++ b/src/main/java/server/events/gm/MapleFitness.java @@ -49,13 +49,13 @@ public class MapleFitness { public void startFitness() { chr.getMap().startEvent(); - chr.getClient().announce(PacketCreator.getClock(900)); + chr.getClient().sendPacket(PacketCreator.getClock(900)); this.timeStarted = System.currentTimeMillis(); this.time = 900000; checkAndMessage(); chr.getMap().getPortal("join00").setPortalStatus(true); - chr.getClient().announce(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter.")); + chr.sendPacket(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter.")); } public boolean isTimerStarted() { @@ -84,29 +84,29 @@ public class MapleFitness { } if (chr.getMap().getId() >= 109040000 && chr.getMap().getId() <= 109040004) { if (getTimeLeft() > 9000 && getTimeLeft() < 11000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~")); + chr.sendPacket(PacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~")); } else if (getTimeLeft() > 99000 && getTimeLeft() < 101000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!")); + chr.sendPacket(PacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!")); } else if (getTimeLeft() > 239000 && getTimeLeft() < 241000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!")); + chr.sendPacket(PacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!")); } else if (getTimeLeft() > 299000 && getTimeLeft() < 301000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up.")); + chr.sendPacket(PacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up.")); } else if (getTimeLeft() > 359000 && getTimeLeft() < 361000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags.")); + chr.sendPacket(PacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags.")); } else if (getTimeLeft() > 499000 && getTimeLeft() < 501000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on.")); + chr.sendPacket(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on.")); } else if (getTimeLeft() > 599000 && getTimeLeft() < 601000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!")); + chr.sendPacket(PacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!")); } else if (getTimeLeft() > 659000 && getTimeLeft() < 661000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing.")); + chr.sendPacket(PacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing.")); } else if (getTimeLeft() > 699000 && getTimeLeft() < 701000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on.")); + chr.sendPacket(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on.")); } else if (getTimeLeft() > 779000 && getTimeLeft() < 781000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages.")); + chr.sendPacket(PacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages.")); } else if (getTimeLeft() > 839000 && getTimeLeft() < 841000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag.")); + chr.sendPacket(PacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag.")); } else if (getTimeLeft() > 869000 && getTimeLeft() < 871000) { - chr.getClient().announce(PacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that.")); + chr.sendPacket(PacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that.")); } } else { resetTimes(); diff --git a/src/main/java/server/events/gm/MapleOla.java b/src/main/java/server/events/gm/MapleOla.java index fa51f0e629..ce5c969e10 100644 --- a/src/main/java/server/events/gm/MapleOla.java +++ b/src/main/java/server/events/gm/MapleOla.java @@ -48,12 +48,12 @@ public class MapleOla { public void startOla() { // TODO: Messages chr.getMap().startEvent(); - chr.getClient().announce(PacketCreator.getClock(360)); + chr.sendPacket(PacketCreator.getClock(360)); this.timeStarted = System.currentTimeMillis(); this.time = 360000; chr.getMap().getPortal("join00").setPortalStatus(true); - chr.getClient().announce(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter.")); + chr.sendPacket(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter.")); } public boolean isTimerStarted() { diff --git a/src/main/java/server/events/gm/MapleSnowball.java b/src/main/java/server/events/gm/MapleSnowball.java index 528e876775..f315ecfe9c 100644 --- a/src/main/java/server/events/gm/MapleSnowball.java +++ b/src/main/java/server/events/gm/MapleSnowball.java @@ -58,8 +58,8 @@ public class MapleSnowball { for (MapleCharacter chr : characters) { if (chr != null) { - chr.announce(PacketCreator.rollSnowBall(false, 1, map.getSnowball(0), map.getSnowball(1))); - chr.announce(PacketCreator.getClock(600)); + chr.sendPacket(PacketCreator.rollSnowBall(false, 1, map.getSnowball(0), map.getSnowball(1))); + chr.sendPacket(PacketCreator.getClock(600)); } } hittable = true; @@ -67,13 +67,13 @@ public class MapleSnowball { if (map.getSnowball(team).getPosition() > map.getSnowball(team == 0 ? 1 : 0).getPosition()) { for (MapleCharacter chr : characters) { if (chr != null) - chr.announce(PacketCreator.rollSnowBall(false, 3, map.getSnowball(0), map.getSnowball(0))); + chr.sendPacket(PacketCreator.rollSnowBall(false, 3, map.getSnowball(0), map.getSnowball(0))); } winner = true; } else if (map.getSnowball(team == 0 ? 1 : 0).getPosition() > map.getSnowball(team).getPosition()) { for (MapleCharacter chr : characters) { if (chr != null) - chr.announce(PacketCreator.rollSnowBall(false, 4, map.getSnowball(0), map.getSnowball(0))); + chr.sendPacket(PacketCreator.rollSnowBall(false, 4, map.getSnowball(0), map.getSnowball(0))); } winner = true; } //Else @@ -138,7 +138,7 @@ public class MapleSnowball { public void message(int message) { for (MapleCharacter chr : characters) { if (chr != null) - chr.announce(PacketCreator.snowballMessage(team, message)); + chr.sendPacket(PacketCreator.snowballMessage(team, message)); } } diff --git a/src/main/java/server/expeditions/MapleExpedition.java b/src/main/java/server/expeditions/MapleExpedition.java index 1cb82ec854..126277efb5 100644 --- a/src/main/java/server/expeditions/MapleExpedition.java +++ b/src/main/java/server/expeditions/MapleExpedition.java @@ -23,6 +23,7 @@ package server.expeditions; import client.MapleCharacter; +import net.packet.Packet; import net.server.PlayerStorage; import net.server.Server; import net.server.audit.locks.MonitoredLockType; @@ -115,10 +116,10 @@ public class MapleExpedition { public void beginRegistration() { registering = true; - leader.announce(PacketCreator.getClock(type.getRegistrationTime() * 60)); + leader.sendPacket(PacketCreator.getClock(type.getRegistrationTime() * 60)); if (!silent) { startMap.broadcastMessage(leader, PacketCreator.serverNotice(6, "[Expedition] " + leader.getName() + " has been declared the expedition captain. Please register for the expedition."), false); - leader.announce(PacketCreator.serverNotice(6, "[Expedition] You have become the expedition captain. Gather enough people for your team then talk to the NPC to start.")); + leader.sendPacket(PacketCreator.serverNotice(6, "[Expedition] You have become the expedition captain. Gather enough people for your team then talk to the NPC to start.")); } scheduleRegistrationEnd(); } @@ -137,18 +138,18 @@ dispose(false); }, type.getRegistrationTime() * 60 * 1000); } - public void dispose(boolean log){ - broadcastExped(PacketCreator.removeClock()); - - if (schedule != null){ - schedule.cancel(false); - } - if (log && !registering){ - LogHelper.logExpedition(this); - } - } + public void dispose(boolean log) { + broadcastExped(PacketCreator.removeClock()); + + if (schedule != null) { + schedule.cancel(false); + } + if (log && !registering) { + LogHelper.logExpedition(this); + } + } - public void finishRegistration() { + public void finishRegistration() { registering = false; } @@ -178,7 +179,7 @@ dispose(false); } members.put(player.getId(), player.getName()); - player.announce(PacketCreator.getClock((int)(startTime - System.currentTimeMillis()) / 1000)); + player.sendPacket(PacketCreator.getClock((int)(startTime - System.currentTimeMillis()) / 1000)); if (!silent) broadcastExped(PacketCreator.serverNotice(6, "[Expedition] " + player.getName() + " has joined the expedition!")); return "You have registered for the expedition successfully!"; } @@ -195,7 +196,7 @@ dispose(false); } members.put(player.getId(), player.getName()); - player.announce(PacketCreator.getClock((int) (startTime - System.currentTimeMillis()) / 1000)); + player.sendPacket(PacketCreator.getClock((int) (startTime - System.currentTimeMillis()) / 1000)); if (!silent) broadcastExped(PacketCreator.serverNotice(6, "[Expedition] " + player.getName() + " has joined the expedition!")); return 0; //"You have registered for the expedition successfully!"; } @@ -208,15 +209,15 @@ dispose(false); } } - private void broadcastExped(byte[] packet){ + private void broadcastExped(Packet packet){ for (MapleCharacter chr : getActiveMembers()){ - chr.announce(packet); + chr.sendPacket(packet); } } public boolean removeMember(MapleCharacter chr) { if(members.remove(chr.getId()) != null) { - chr.announce(PacketCreator.removeClock()); + chr.sendPacket(PacketCreator.removeClock()); if (!silent) { broadcastExped(PacketCreator.serverNotice(6, "[Expedition] " + chr.getName() + " has left the expedition.")); chr.dropMessage(6, "[Expedition] You have left this expedition."); @@ -237,7 +238,7 @@ dispose(false); MapleCharacter player = startMap.getWorldServer().getPlayerStorage().getCharacterById(cid); if (player != null && player.isLoggedinWorld()) { - player.announce(PacketCreator.removeClock()); + player.sendPacket(PacketCreator.removeClock()); if (!silent) player.dropMessage(6, "[Expedition] You have been banned from this expedition."); if (MapleExpeditionType.ARIANT.equals(type) || MapleExpeditionType.ARIANT1.equals(type) || MapleExpeditionType.ARIANT2.equals(type)) { player.changeMap(980010000); diff --git a/src/main/java/server/life/MapleMonster.java b/src/main/java/server/life/MapleMonster.java index 728ee1cf76..dbf7e71dc0 100644 --- a/src/main/java/server/life/MapleMonster.java +++ b/src/main/java/server/life/MapleMonster.java @@ -26,6 +26,7 @@ import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; import constants.skills.*; +import net.packet.Packet; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; @@ -365,16 +366,16 @@ public class MapleMonster extends AbstractLoadedMapleLife { from.getMap().broadcastBossHpMessage(this, this.hashCode(), makeBossHPBarPacket(), getPosition()); } else if (!isBoss()) { int remainingHP = (int) Math.max(1, hp.get() * 100f / getMaxHp()); - byte[] packet = PacketCreator.showMonsterHP(getObjectId(), remainingHP); + Packet packet = PacketCreator.showMonsterHP(getObjectId(), remainingHP); if (from.getParty() != null) { for (MaplePartyCharacter mpc : from.getParty().getMembers()) { MapleCharacter member = from.getMap().getCharacterById(mpc.getId()); // god bless if (member != null) { - member.announce(packet.clone()); // clone it just in case of crypto + member.sendPacket(packet); } } } else { - from.announce(packet); + from.sendPacket(packet); } } } @@ -1005,7 +1006,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { this.controllerHasPuppet = controllerHasPuppet; } - public byte[] makeBossHPBarPacket() { + public Packet makeBossHPBarPacket() { return PacketCreator.showBossHP(getId(), getHp(), getMaxHp(), getTagColor(), getTagBgColor()); } @@ -1019,9 +1020,9 @@ public class MapleMonster extends AbstractLoadedMapleLife { return; } if (fake) { - client.announce(PacketCreator.spawnFakeMonster(this, 0)); + client.sendPacket(PacketCreator.spawnFakeMonster(this, 0)); } else { - client.announce(PacketCreator.spawnMonster(this, false)); + client.sendPacket(PacketCreator.spawnMonster(this, false)); } if (hasBossHPBar()) { @@ -1031,8 +1032,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { @Override public void sendDestroyData(MapleClient client) { - client.announce(PacketCreator.killMonster(getObjectId(), false)); - client.announce(PacketCreator.killMonster(getObjectId(), true)); + client.sendPacket(PacketCreator.killMonster(getObjectId(), false)); + client.sendPacket(PacketCreator.killMonster(getObjectId(), true)); } @Override @@ -1086,18 +1087,18 @@ public class MapleMonster extends AbstractLoadedMapleLife { } } - private void broadcastMonsterStatusMessage(byte[] packet) { + private void broadcastMonsterStatusMessage(Packet packet) { map.broadcastMessage(packet, getPosition()); MapleCharacter chrController = getActiveController(); if (chrController != null && !chrController.isMapObjectVisible(MapleMonster.this)) { - chrController.announce(packet); + chrController.sendPacket(packet); } } private int broadcastStatusEffect(final MonsterStatusEffect status) { int animationTime = status.getSkill().getAnimationTime(); - byte[] packet = PacketCreator.applyMonsterStatus(getObjectId(), status, null); + Packet packet = PacketCreator.applyMonsterStatus(getObjectId(), status, null); broadcastMonsterStatusMessage(packet); return animationTime; @@ -1172,7 +1173,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { final Runnable cancelTask = () -> { if (isAlive()) { - byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), status.getStati()); + Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), status.getStati()); broadcastMonsterStatusMessage(packet); } @@ -1284,7 +1285,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { public void applyMonsterBuff(final Map stats, final int x, int skillId, long duration, MobSkill skill, final List reflection) { final Runnable cancelTask = () -> { if (isAlive()) { - byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), stats); + Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), stats); broadcastMonsterStatusMessage(packet); statiLock.lock(); @@ -1298,7 +1299,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } }; final MonsterStatusEffect effect = new MonsterStatusEffect(stats, null, skill, true); - byte[] packet = PacketCreator.applyMonsterStatus(getObjectId(), effect, reflection); + Packet packet = PacketCreator.applyMonsterStatus(getObjectId(), effect, reflection); broadcastMonsterStatusMessage(packet); statiLock.lock(); @@ -1339,7 +1340,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } if (oldEffect != null) { - byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), oldEffect.getStati()); + Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), oldEffect.getStati()); broadcastMonsterStatusMessage(packet); } } @@ -1884,7 +1885,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } if (chrController != null) { // this can/should only happen when a hidden gm attacks the monster - if (!this.isFake()) chrController.announce(PacketCreator.stopControllingMonster(this.getObjectId())); + if (!this.isFake()) chrController.sendPacket(PacketCreator.stopControllingMonster(this.getObjectId())); chrController.stopControllingMonster(this); } @@ -2088,7 +2089,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { Maybe Nexon intended to interchange controllers at every attack... else if (chrController != null) { - chrController.announce(PacketCreator.stopControllingMonster(this.getObjectId())); + chrController.sendPacket(PacketCreator.stopControllingMonster(this.getObjectId())); aggroMonsterControl(chrController.getClient(), this, true); } */ @@ -2099,7 +2100,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } private static void aggroMonsterControl(MapleClient c, MapleMonster mob, boolean immediateAggro) { - c.announce(PacketCreator.controlMonster(mob, false, immediateAggro)); + c.sendPacket(PacketCreator.controlMonster(mob, false, immediateAggro)); } private void aggroRefreshPuppetVisibility(MapleCharacter chrController, MapleSummon puppet) { @@ -2113,15 +2114,15 @@ public class MapleMonster extends AbstractLoadedMapleLife { } for (MapleMonster mob : puppetControlled) { - chrController.announce(PacketCreator.stopControllingMonster(mob.getObjectId())); + chrController.sendPacket(PacketCreator.stopControllingMonster(mob.getObjectId())); } - chrController.announce(PacketCreator.removeSummon(puppet, false)); + chrController.sendPacket(PacketCreator.removeSummon(puppet, false)); MapleClient c = chrController.getClient(); for (MapleMonster mob : puppetControlled) { // thanks BHB for noticing puppets disrupting mobstatuses for bowmans aggroMonsterControl(c, mob, mob.isControllerKnowsAboutAggro()); } - chrController.announce(PacketCreator.spawnSummon(puppet, false)); + chrController.sendPacket(PacketCreator.spawnSummon(puppet, false)); } public void aggroUpdatePuppetVisibility() { @@ -2151,7 +2152,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (controllerHasPuppet) { controllerHasPuppet = false; - chrController.announce(PacketCreator.stopControllingMonster(MapleMonster.this.getObjectId())); + chrController.sendPacket(PacketCreator.stopControllingMonster(MapleMonster.this.getObjectId())); aggroMonsterControl(chrController.getClient(), MapleMonster.this, MapleMonster.this.isControllerHasAggro()); } } finally { diff --git a/src/main/java/server/life/MapleNPC.java b/src/main/java/server/life/MapleNPC.java index ef343786b4..718bc326ec 100644 --- a/src/main/java/server/life/MapleNPC.java +++ b/src/main/java/server/life/MapleNPC.java @@ -27,7 +27,7 @@ import server.maps.MapleMapObjectType; import tools.PacketCreator; public class MapleNPC extends AbstractLoadedMapleLife { - private MapleNPCStats stats; + private final MapleNPCStats stats; public MapleNPC(int id, MapleNPCStats stats) { super(id); @@ -44,14 +44,14 @@ public class MapleNPC extends AbstractLoadedMapleLife { @Override public void sendSpawnData(MapleClient client) { - client.announce(PacketCreator.spawnNPC(this)); - client.announce(PacketCreator.spawnNPCRequestController(this, true)); + client.sendPacket(PacketCreator.spawnNPC(this)); + client.sendPacket(PacketCreator.spawnNPCRequestController(this, true)); } @Override public void sendDestroyData(MapleClient client) { - client.announce(PacketCreator.removeNPCController(getObjectId())); - client.announce(PacketCreator.removeNPC(getObjectId())); + client.sendPacket(PacketCreator.removeNPCController(getObjectId())); + client.sendPacket(PacketCreator.removeNPC(getObjectId())); } @Override diff --git a/src/main/java/server/life/MaplePlayerNPC.java b/src/main/java/server/life/MaplePlayerNPC.java index ddd3b852db..cec6d892f4 100644 --- a/src/main/java/server/life/MaplePlayerNPC.java +++ b/src/main/java/server/life/MaplePlayerNPC.java @@ -200,14 +200,14 @@ public class MaplePlayerNPC extends AbstractMapleMapObject { @Override public void sendSpawnData(MapleClient client) { - client.announce(PacketCreator.spawnPlayerNPC(this)); - client.announce(PacketCreator.getPlayerNPC(this)); + client.sendPacket(PacketCreator.spawnPlayerNPC(this)); + client.sendPacket(PacketCreator.getPlayerNPC(this)); } @Override public void sendDestroyData(MapleClient client) { - client.announce(PacketCreator.removeNPCController(this.getObjectId())); - client.announce(PacketCreator.removePlayerNPC(this.getObjectId())); + client.sendPacket(PacketCreator.removeNPCController(this.getObjectId())); + client.sendPacket(PacketCreator.removePlayerNPC(this.getObjectId())); } private static void getRunningMetadata() { diff --git a/src/main/java/server/maps/MapleDoorObject.java b/src/main/java/server/maps/MapleDoorObject.java index 880094dd48..df6d8d6503 100644 --- a/src/main/java/server/maps/MapleDoorObject.java +++ b/src/main/java/server/maps/MapleDoorObject.java @@ -91,7 +91,7 @@ public class MapleDoorObject extends AbstractMapleMapObject { public void warp(final MapleCharacter chr) { MapleParty party = chr.getParty(); if (chr.getId() == ownerId || (party != null && party.getMemberById(ownerId) != null)) { - chr.announce(PacketCreator.playPortalSound()); + chr.sendPacket(PacketCreator.playPortalSound()); if(!inTown() && party == null) { chr.changeMap(to, getLinkedPortalId()); @@ -99,8 +99,8 @@ public class MapleDoorObject extends AbstractMapleMapObject { chr.changeMap(to, getLinkedPortalPosition()); } } else { - chr.getClient().announce(PacketCreator.blockedMessage(6)); - chr.getClient().announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.blockedMessage(6)); + chr.sendPacket(PacketCreator.enableActions()); } } @@ -113,12 +113,12 @@ public class MapleDoorObject extends AbstractMapleMapObject { MapleCharacter chr = client.getPlayer(); if (this.getFrom().getId() == chr.getMapId()) { if (chr.getParty() != null && (this.getOwnerId() == chr.getId() || chr.getParty().getMemberById(this.getOwnerId()) != null)) { - chr.announce(PacketCreator.partyPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition())); + chr.sendPacket(PacketCreator.partyPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition())); } - chr.announce(PacketCreator.spawnPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition())); + chr.sendPacket(PacketCreator.spawnPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition())); if (!this.inTown()) { - chr.announce(PacketCreator.spawnDoor(this.getOwnerId(), this.getPosition(), launched)); + chr.sendPacket(PacketCreator.spawnDoor(this.getOwnerId(), this.getPosition(), launched)); } } } @@ -129,16 +129,16 @@ public class MapleDoorObject extends AbstractMapleMapObject { if (from.getId() == chr.getMapId()) { MapleParty party = chr.getParty(); if (party != null && (ownerId == chr.getId() || party.getMemberById(ownerId) != null)) { - client.announce(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1))); + client.sendPacket(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1))); } - client.announce(PacketCreator.removeDoor(ownerId, inTown())); + client.sendPacket(PacketCreator.removeDoor(ownerId, inTown())); } } public void sendDestroyData(MapleClient client, boolean partyUpdate) { if (client != null && from.getId() == client.getPlayer().getMapId()) { - client.announce(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1))); - client.announce(PacketCreator.removeDoor(ownerId, inTown())); + client.sendPacket(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1))); + client.sendPacket(PacketCreator.removeDoor(ownerId, inTown())); } } diff --git a/src/main/java/server/maps/MapleDragon.java b/src/main/java/server/maps/MapleDragon.java index 6c669daa17..dd2dbded3a 100644 --- a/src/main/java/server/maps/MapleDragon.java +++ b/src/main/java/server/maps/MapleDragon.java @@ -46,7 +46,7 @@ public class MapleDragon extends AbstractAnimatedMapleMapObject { @Override public void sendSpawnData(MapleClient client) { - client.announce(PacketCreator.spawnDragon(this)); + client.sendPacket(PacketCreator.spawnDragon(this)); } @Override @@ -56,7 +56,7 @@ public class MapleDragon extends AbstractAnimatedMapleMapObject { @Override public void sendDestroyData(MapleClient c) { - c.announce(PacketCreator.removeDragon(owner.getId())); + c.sendPacket(PacketCreator.removeDragon(owner.getId())); } public MapleCharacter getOwner() { diff --git a/src/main/java/server/maps/MapleGenericPortal.java b/src/main/java/server/maps/MapleGenericPortal.java index 75d21b5a5d..53329f45a9 100644 --- a/src/main/java/server/maps/MapleGenericPortal.java +++ b/src/main/java/server/maps/MapleGenericPortal.java @@ -156,7 +156,7 @@ public class MapleGenericPortal implements MaplePortal { } } if (!changed) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); } } diff --git a/src/main/java/server/maps/MapleHiredMerchant.java b/src/main/java/server/maps/MapleHiredMerchant.java index 0bce8bc3ce..7af984f59e 100644 --- a/src/main/java/server/maps/MapleHiredMerchant.java +++ b/src/main/java/server/maps/MapleHiredMerchant.java @@ -31,6 +31,7 @@ import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; import client.processor.npc.FredrickProcessor; import config.YamlConfig; +import net.packet.Packet; import net.server.Server; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; @@ -83,7 +84,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { this.map = owner.getMap(); } - public void broadcastToVisitorsThreadsafe(final byte[] packet) { + public void broadcastToVisitorsThreadsafe(Packet packet) { visitorLock.lock(); try { broadcastToVisitors(packet); @@ -92,10 +93,10 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { } } - private void broadcastToVisitors(final byte[] packet) { + private void broadcastToVisitors(Packet packet) { for (MapleCharacter visitor : visitors) { if (visitor != null) { - visitor.getClient().announce(packet); + visitor.sendPacket(packet); } } } @@ -182,8 +183,8 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { if (visitor != null) { visitor.setHiredMerchant(null); - visitor.getClient().announce(PacketCreator.leaveHiredMerchant(i + 1, 0x11)); - visitor.getClient().announce(PacketCreator.hiredMerchantMaintenanceMessage()); + visitor.sendPacket(PacketCreator.leaveHiredMerchant(i + 1, 0x11)); + visitor.sendPacket(PacketCreator.hiredMerchantMaintenanceMessage()); visitors[i] = null; } @@ -197,8 +198,8 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { private void removeOwner(MapleCharacter owner) { if (owner.getHiredMerchant() == this) { - owner.announce(PacketCreator.hiredMerchantOwnerLeave()); - owner.announce(PacketCreator.leaveHiredMerchant(0x00, 0x03)); + owner.sendPacket(PacketCreator.hiredMerchantOwnerLeave()); + owner.sendPacket(PacketCreator.leaveHiredMerchant(0x00, 0x03)); owner.setHiredMerchant(null); } } @@ -220,8 +221,8 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { iitem.setQuantity((short) (shopItem.getItem().getQuantity() * shopItem.getBundles())); if (!MapleInventory.checkSpot(chr, iitem)) { - chr.announce(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item.")); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item.")); + chr.sendPacket(PacketCreator.enableActions()); return; } @@ -229,7 +230,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { } removeFromSlot(slot); - chr.announce(PacketCreator.updateHiredMerchant(this, chr)); + chr.sendPacket(PacketCreator.updateHiredMerchant(this, chr)); } if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) { @@ -263,10 +264,10 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { newItem.setQuantity((short) ((pItem.getItem().getQuantity() * quantity))); if (quantity < 1 || !pItem.isExist() || pItem.getBundles() < quantity) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } else if (newItem.getInventoryType().equals(MapleInventoryType.EQUIP) && newItem.getQuantity() > 1) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } @@ -318,12 +319,12 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { } } else { c.getPlayer().dropMessage(1, "Your inventory is full. Please clear a slot before buying this item."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } } else { c.getPlayer().dropMessage(1, "You don't have enough mesos to purchase this item."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return; } try { @@ -461,15 +462,15 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { this.setOpen(false); this.removeAllVisitors(); - chr.announce(PacketCreator.getHiredMerchant(chr, this, false)); + chr.sendPacket(PacketCreator.getHiredMerchant(chr, this, false)); } else if (!this.isOpen()) { - chr.announce(PacketCreator.getMiniRoomError(18)); + chr.sendPacket(PacketCreator.getMiniRoomError(18)); return; } else if (!this.addVisitor(chr)) { - chr.announce(PacketCreator.getMiniRoomError(2)); + chr.sendPacket(PacketCreator.getMiniRoomError(2)); return; } else { - chr.announce(PacketCreator.getHiredMerchant(chr, this, false)); + chr.sendPacket(PacketCreator.getHiredMerchant(chr, this, false)); } chr.setHiredMerchant(this); } finally { @@ -713,7 +714,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { @Override public void sendSpawnData(MapleClient client) { - client.announce(PacketCreator.spawnHiredMerchantBox(this)); + client.sendPacket(PacketCreator.spawnHiredMerchantBox(this)); } public class SoldItem { diff --git a/src/main/java/server/maps/MapleKite.java b/src/main/java/server/maps/MapleKite.java index f1fdbc54ed..078e7639c1 100644 --- a/src/main/java/server/maps/MapleKite.java +++ b/src/main/java/server/maps/MapleKite.java @@ -2,24 +2,24 @@ package server.maps; import client.MapleCharacter; import client.MapleClient; +import net.packet.Packet; import tools.PacketCreator; import java.awt.*; public class MapleKite extends AbstractMapleMapObject { + private final Point pos; + private final MapleCharacter owner; + private final String text; + private final int ft; + private final int itemid; - private Point pos; - private MapleCharacter owner; - private String text; - private int ft; - private int itemid; - - public MapleKite(MapleCharacter owner, String text, int itemid) { + public MapleKite(MapleCharacter owner, String text, int itemId) { this.owner = owner; this.pos = owner.getPosition(); this.ft = owner.getFh(); this.text = text; - this.itemid = itemid; + this.itemid = itemId; } @Override @@ -43,19 +43,19 @@ public class MapleKite extends AbstractMapleMapObject { @Override public void sendDestroyData(MapleClient client) { - client.announce(makeDestroyData()); + client.sendPacket(makeDestroyData()); } @Override public void sendSpawnData(MapleClient client) { - client.announce(makeSpawnData()); + client.sendPacket(makeSpawnData()); } - public final byte[] makeSpawnData() { + public final Packet makeSpawnData() { return PacketCreator.spawnKite(getObjectId(), itemid, owner.getName(), text, pos, ft); } - public final byte[] makeDestroyData() { + public final Packet makeDestroyData() { return PacketCreator.removeKite(getObjectId(), 0); } } \ No newline at end of file diff --git a/src/main/java/server/maps/MapleMap.java b/src/main/java/server/maps/MapleMap.java index 2a30648d88..57322bd8ed 100644 --- a/src/main/java/server/maps/MapleMap.java +++ b/src/main/java/server/maps/MapleMap.java @@ -34,6 +34,7 @@ import client.status.MonsterStatusEffect; import config.YamlConfig; import constants.game.GameConstants; import constants.inventory.ItemConstants; +import net.packet.Packet; import net.server.Server; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReadLock; @@ -74,6 +75,7 @@ import java.util.Map.Entry; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Lock; +import java.util.function.Predicate; public class MapleMap { @@ -199,28 +201,21 @@ public class MapleMap { public int getWorld() { return world; } - - public void broadcastMessage(MapleCharacter source, final byte[] packet) { - chrRLock.lock(); - try { - for (MapleCharacter chr : characters) { - if (chr != source) { - chr.getClient().announce(packet); - } - } - } finally { - chrRLock.unlock(); - } + + public void broadcastPacket(MapleCharacter source, Packet packet) { + broadcastPacket(packet, chr -> chr != source); } - public void broadcastGMMessage(MapleCharacter source, final byte[] packet) { + public void broadcastGMPacket(MapleCharacter source, Packet packet) { + broadcastPacket(packet, chr -> chr != source && chr.gmLevel() >= source.gmLevel()); + } + + private void broadcastPacket(Packet packet, Predicate chrFilter) { chrRLock.lock(); try { - for (MapleCharacter chr : characters) { - if (chr != source && (chr.gmLevel() >= source.gmLevel())) { - chr.getClient().announce(packet); - } - } + characters.stream() + .filter(chrFilter) + .forEach(chr -> chr.sendPacket(packet)); } finally { chrRLock.unlock(); } @@ -230,9 +225,8 @@ public class MapleMap { this.dropsOn = !dropsOn; } - private static double getRangedDistance() { - return(YamlConfig.config.server.USE_MAXRANGE ? Double.POSITIVE_INFINITY : 722500); + return YamlConfig.config.server.USE_MAXRANGE ? Double.POSITIVE_INFINITY : 722500; } public List getMapObjectsInRect(Rectangle box, List types) { @@ -1018,7 +1012,7 @@ public class MapleMap { return count; } - public void pickItemDrop(byte[] pickupPacket, MapleMapItem mdrop) { // mdrop must be already locked and not-pickedup checked at this point + public void pickItemDrop(Packet pickupPacket, MapleMapItem mdrop) { // mdrop must be already locked and not-pickedup checked at this point broadcastMessage(pickupPacket, mdrop.getPosition()); droppedItemCount.decrementAndGet(); @@ -1040,25 +1034,25 @@ public class MapleMap { mdrop.setPartyOwnerId(partyid); - byte[] removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId()); - byte[] updatePacket = PacketCreator.updateMapItemObject(mdrop, partyLeaver == null); + Packet removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId()); + Packet updatePacket = PacketCreator.updateMapItemObject(mdrop, partyLeaver == null); for (MapleCharacter mc : partyMembers) { if (this.equals(mc.getMap())) { - mc.announce(removePacket); + mc.sendPacket(removePacket); if (mc.needQuestItem(mdrop.getQuest(), mdrop.getItemId())) { - mc.announce(updatePacket); + mc.sendPacket(updatePacket); } } } if (partyLeaver != null) { if (this.equals(partyLeaver.getMap())) { - partyLeaver.announce(removePacket); + partyLeaver.sendPacket(removePacket); if (partyLeaver.needQuestItem(mdrop.getQuest(), mdrop.getItemId())) { - partyLeaver.announce(PacketCreator.updateMapItemObject(mdrop, true)); + partyLeaver.sendPacket(PacketCreator.updateMapItemObject(mdrop, true)); } } } @@ -1081,15 +1075,15 @@ public class MapleMap { continue; } - byte[] removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId()); - byte[] updatePacket = PacketCreator.updateMapItemObject(mdrop, true); + Packet removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId()); + Packet updatePacket = PacketCreator.updateMapItemObject(mdrop, true); if (newcomer != null) { if (this.equals(newcomer.getMap())) { - newcomer.announce(removePacket); + newcomer.sendPacket(removePacket); if (newcomer.needQuestItem(mdrop.getQuest(), mdrop.getItemId())) { - newcomer.announce(updatePacket); + newcomer.sendPacket(updatePacket); } } } @@ -1108,7 +1102,7 @@ public class MapleMap { if (chr1.needQuestItem(questid, idrop.getItemId())) { mdrop.lockItem(); try { - c.announce(PacketCreator.dropItemFromMapObject(chr1, mdrop, dropper.getPosition(), dropPos, (byte) 1)); + c.sendPacket(PacketCreator.dropItemFromMapObject(chr1, mdrop, dropper.getPosition(), dropPos, (byte) 1)); } finally { mdrop.unlockItem(); } @@ -1127,7 +1121,7 @@ public class MapleMap { spawnAndAddRangedMapObject(mdrop, c -> { mdrop.lockItem(); try { - c.announce(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1)); + c.sendPacket(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1)); } finally { mdrop.unlockItem(); } @@ -1407,8 +1401,8 @@ public class MapleMap { MapleCharacter character = (MapleCharacter) mmo; if (character.isAlive()) { MapleStatEffect statEffect = mii.getItemEffect(buff); - character.getClient().announce(PacketCreator.showOwnBuffEffect(buff, 1)); - broadcastMessage(character, PacketCreator.showBuffeffect(character.getId(), buff, 1), false); + character.sendPacket(PacketCreator.showOwnBuffEffect(buff, 1)); + broadcastMessage(character, PacketCreator.showBuffEffect(character.getId(), buff, 1), false); statEffect.applyTo(character); } } @@ -1867,7 +1861,7 @@ public class MapleMap { getEventInstance().registerMonster(monster); } - spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnMonster(monster, false))); + spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnMonster(monster, false))); monster.aggroUpdateController(); updateBossSpawn(monster); @@ -1954,7 +1948,7 @@ public class MapleMap { getEventInstance().registerMonster(monster); } - spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnMonster(monster, true)), null); + spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnMonster(monster, true)), null); monster.aggroUpdateController(); updateBossSpawn(monster); @@ -2015,7 +2009,7 @@ public class MapleMap { monster.setPosition(spos); monster.setSpawnEffect(effect); - spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnMonster(monster, true, effect))); + spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnMonster(monster, true, effect))); monster.aggroUpdateController(); updateBossSpawn(monster); @@ -2028,7 +2022,7 @@ public class MapleMap { public void spawnFakeMonster(final MapleMonster monster) { monster.setMap(this); monster.setFake(true); - spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnFakeMonster(monster, 0))); + spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnFakeMonster(monster, 0))); spawnedMonstersOnMap.incrementAndGet(); addSelfDestructive(monster); @@ -2043,7 +2037,7 @@ public class MapleMap { public void spawnReactor(final MapleReactor reactor) { reactor.setMap(this); - spawnAndAddRangedMapObject(reactor, c -> c.announce(reactor.makeSpawnData())); + spawnAndAddRangedMapObject(reactor, c -> c.sendPacket(reactor.makeSpawnData())); } public void spawnDoor(final MapleDoorObject door) { @@ -2069,7 +2063,7 @@ public class MapleMap { public void spawnSummon(final MapleSummon summon) { spawnAndAddRangedMapObject(summon, c -> { if (summon != null) { - c.announce(PacketCreator.spawnSummon(summon, true)); + c.sendPacket(PacketCreator.spawnSummon(summon, true)); } }, null); } @@ -2148,7 +2142,7 @@ public class MapleMap { spawnAndAddRangedMapObject(mdrop, c -> { mdrop.lockItem(); try { - c.announce(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1)); + c.sendPacket(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1)); } finally { mdrop.unlockItem(); } @@ -2402,7 +2396,7 @@ public class MapleMap { if (mapid == 200090060) { // To Rien int travelTime = getWorldServer().getTransportationTime(1 * 60 * 1000); - chr.announce(PacketCreator.getClock(travelTime / 1000)); + chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { if (chr.getMapId() == 200090060) { chr.changeMap(140020300, 0); @@ -2410,7 +2404,7 @@ public class MapleMap { }, travelTime); } else if (mapid == 200090070) { // To Lith Harbor int travelTime = getWorldServer().getTransportationTime(1 * 60 * 1000); - chr.announce(PacketCreator.getClock(travelTime / 1000)); + chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { if (chr.getMapId() == 200090070) { chr.changeMap(104000000, 3); @@ -2418,7 +2412,7 @@ public class MapleMap { }, travelTime); } else if (mapid == 200090030) { // To Ereve (SkyFerry) int travelTime = getWorldServer().getTransportationTime(2 * 60 * 1000); - chr.announce(PacketCreator.getClock(travelTime / 1000)); + chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { if (chr.getMapId() == 200090030) { chr.changeMap(130000210, 0); @@ -2426,7 +2420,7 @@ public class MapleMap { }, travelTime); } else if (mapid == 200090031) { // To Victoria Island (SkyFerry) int travelTime = getWorldServer().getTransportationTime(2 * 60 * 1000); - chr.announce(PacketCreator.getClock(travelTime / 1000)); + chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { if (chr.getMapId() == 200090031) { chr.changeMap(101000400, 0); @@ -2434,7 +2428,7 @@ public class MapleMap { }, travelTime); } else if (mapid == 200090021) { // To Orbis (SkyFerry) int travelTime = getWorldServer().getTransportationTime(8 * 60 * 1000); - chr.announce(PacketCreator.getClock(travelTime / 1000)); + chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { if (chr.getMapId() == 200090021) { chr.changeMap(200000161, 0); @@ -2442,7 +2436,7 @@ public class MapleMap { }, travelTime); } else if (mapid == 200090020) { // To Ereve From Orbis (SkyFerry) int travelTime = getWorldServer().getTransportationTime(8 * 60 * 1000); - chr.announce(PacketCreator.getClock(travelTime / 1000)); + chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { if (chr.getMapId() == 200090020) { chr.changeMap(130000210, 0); @@ -2455,14 +2449,14 @@ public class MapleMap { } } else if (GameConstants.isAriantColiseumArena(mapid)) { int pqTimer = (10 * 60 * 1000); - chr.announce(PacketCreator.getClock(pqTimer / 1000)); + chr.sendPacket(PacketCreator.getClock(pqTimer / 1000)); } MaplePet[] pets = chr.getPets(); for (MaplePet pet : pets) { if (pet != null) { pet.setPos(getGroundBelow(chr.getPosition())); - chr.announce(PacketCreator.showPet(chr, pet, false, false)); + chr.sendPacket(PacketCreator.showPet(chr, pet, false, false)); } else { break; } @@ -2470,7 +2464,7 @@ public class MapleMap { chr.commitExcludedItems(); // thanks OishiiKawaiiDesu for noticing pet item ignore registry erasing upon changing maps if (chr.getMonsterCarnival() != null) { - chr.getClient().announce(PacketCreator.getClock(chr.getMonsterCarnival().getTimeLeftSeconds())); + chr.sendPacket(PacketCreator.getClock(chr.getMonsterCarnival().getTimeLeftSeconds())); if (isCPQMap()) { int team = -1; int oposition = -1; @@ -2482,7 +2476,7 @@ public class MapleMap { team = 1; oposition = 0; } - chr.getClient().announce(PacketCreator.startMonsterCarnival(chr, team, oposition)); + chr.sendPacket(PacketCreator.startMonsterCarnival(chr, team, oposition)); } } @@ -2490,7 +2484,7 @@ public class MapleMap { if (chr.getChalkboard() != null) { if (!GameConstants.isFreeMarketRoom(mapid)) { - chr.announce(PacketCreator.useChalkboard(chr, false)); // update player's chalkboard when changing maps found thanks to Vcoc + chr.sendPacket(PacketCreator.useChalkboard(chr, false)); // update player's chalkboard when changing maps found thanks to Vcoc } else { chr.setChalkboard(null); } @@ -2498,7 +2492,7 @@ public class MapleMap { if (chr.isHidden()) { broadcastGMSpawnPlayerMapObjectMessage(chr, chr, true); - chr.announce(PacketCreator.getGMEffect(0x10, (byte) 1)); + chr.sendPacket(PacketCreator.getGMEffect(0x10, (byte) 1)); List> dsstat = Collections.singletonList(new Pair<>(MapleBuffStat.DARKSIGHT, 0)); broadcastGMMessage(chr, PacketCreator.giveForeignBuff(chr.getId(), dsstat), false); @@ -2512,11 +2506,11 @@ public class MapleMap { chr.getMap().getPortal("join00").setPortalStatus(false); } if (hasForcedEquip()) { - chr.getClient().announce(PacketCreator.showForcedEquip(-1)); + chr.sendPacket(PacketCreator.showForcedEquip(-1)); } if (specialEquip()) { - chr.getClient().announce(PacketCreator.coconutScore(0, 0)); - chr.getClient().announce(PacketCreator.showForcedEquip(chr.getTeam())); + chr.sendPacket(PacketCreator.coconutScore(0, 0)); + chr.sendPacket(PacketCreator.showForcedEquip(chr.getTeam())); } objectWLock.lock(); try { @@ -2534,9 +2528,9 @@ public class MapleMap { dragon.setPosition(chr.getPosition()); this.addMapObject(dragon); if (chr.isHidden()) { - this.broadcastGMMessage(chr, PacketCreator.spawnDragon(dragon)); + this.broadcastGMPacket(chr, PacketCreator.spawnDragon(dragon)); } else { - this.broadcastMessage(chr, PacketCreator.spawnDragon(dragon)); + this.broadcastPacket(chr, PacketCreator.spawnDragon(dragon)); } } @@ -2550,34 +2544,34 @@ public class MapleMap { if (mapEffect != null) { mapEffect.sendStartData(chr.getClient()); } - chr.getClient().announce(PacketCreator.resetForcedStats()); + chr.sendPacket(PacketCreator.resetForcedStats()); if (mapid == 914000200 || mapid == 914000210 || mapid == 914000220) { - chr.getClient().announce(PacketCreator.aranGodlyStats()); + chr.sendPacket(PacketCreator.aranGodlyStats()); } if (chr.getEventInstance() != null && chr.getEventInstance().isTimerStarted()) { - chr.getClient().announce(PacketCreator.getClock((int) (chr.getEventInstance().getTimeLeft() / 1000))); + chr.sendPacket(PacketCreator.getClock((int) (chr.getEventInstance().getTimeLeft() / 1000))); } if (chr.getFitness() != null && chr.getFitness().isTimerStarted()) { - chr.getClient().announce(PacketCreator.getClock((int) (chr.getFitness().getTimeLeft() / 1000))); + chr.sendPacket(PacketCreator.getClock((int) (chr.getFitness().getTimeLeft() / 1000))); } if (chr.getOla() != null && chr.getOla().isTimerStarted()) { - chr.getClient().announce(PacketCreator.getClock((int) (chr.getOla().getTimeLeft() / 1000))); + chr.sendPacket(PacketCreator.getClock((int) (chr.getOla().getTimeLeft() / 1000))); } if (mapid == 109060000) { - chr.announce(PacketCreator.rollSnowBall(true, 0, null, null)); + chr.sendPacket(PacketCreator.rollSnowBall(true, 0, null, null)); } if (hasClock()) { Calendar cal = Calendar.getInstance(); - chr.getClient().announce((PacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)))); + chr.sendPacket(PacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND))); } if (hasBoat() > 0) { if (hasBoat() == 1) { - chr.getClient().announce((PacketCreator.boatPacket(true))); + chr.sendPacket((PacketCreator.boatPacket(true))); } else { - chr.getClient().announce(PacketCreator.boatPacket(false)); + chr.sendPacket(PacketCreator.boatPacket(false)); } } @@ -2715,18 +2709,18 @@ public class MapleMap { if (chr.getDragon() != null) { removeMapObject(chr.getDragon()); if (chr.isHidden()) { - this.broadcastGMMessage(chr, PacketCreator.removeDragon(chr.getId())); + this.broadcastGMPacket(chr, PacketCreator.removeDragon(chr.getId())); } else { - this.broadcastMessage(chr, PacketCreator.removeDragon(chr.getId())); + this.broadcastPacket(chr, PacketCreator.removeDragon(chr.getId())); } } } - public void broadcastMessage(final byte[] packet) { + public void broadcastMessage(Packet packet) { broadcastMessage(null, packet, Double.POSITIVE_INFINITY, null); } - public void broadcastGMMessage(final byte[] packet) { + public void broadcastGMMessage(Packet packet) { broadcastGMMessage(null, packet, Double.POSITIVE_INFINITY, null); } @@ -2737,7 +2731,7 @@ public class MapleMap { * @param packet * @param repeatToSource */ - public void broadcastMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) { + public void broadcastMessage(MapleCharacter source, Packet packet, boolean repeatToSource) { broadcastMessage(repeatToSource ? null : source, packet, Double.POSITIVE_INFINITY, source.getPosition()); } @@ -2749,7 +2743,7 @@ public class MapleMap { * @param repeatToSource * @param ranged */ - public void broadcastMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource, boolean ranged) { + public void broadcastMessage(MapleCharacter source, Packet packet, boolean repeatToSource, boolean ranged) { broadcastMessage(repeatToSource ? null : source, packet, ranged ? getRangedDistance() : Double.POSITIVE_INFINITY, source.getPosition()); } @@ -2759,7 +2753,7 @@ public class MapleMap { * @param packet * @param rangedFrom */ - public void broadcastMessage(final byte[] packet, Point rangedFrom) { + public void broadcastMessage(Packet packet, Point rangedFrom) { broadcastMessage(null, packet, getRangedDistance(), rangedFrom); } @@ -2770,21 +2764,21 @@ public class MapleMap { * @param packet * @param rangedFrom */ - public void broadcastMessage(MapleCharacter source, final byte[] packet, Point rangedFrom) { + public void broadcastMessage(MapleCharacter source, Packet packet, Point rangedFrom) { broadcastMessage(source, packet, getRangedDistance(), rangedFrom); } - private void broadcastMessage(MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) { + private void broadcastMessage(MapleCharacter source, Packet packet, double rangeSq, Point rangedFrom) { chrRLock.lock(); try { for (MapleCharacter chr : characters) { if (chr != source) { if (rangeSq < Double.POSITIVE_INFINITY) { if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) { - chr.getClient().announce(packet); + chr.sendPacket(packet); } } else { - chr.getClient().announce(packet); + chr.sendPacket(packet); } } } @@ -2808,15 +2802,15 @@ public class MapleMap { } } - public void broadcastBossHpMessage(MapleMonster mm, int bossHash, final byte[] packet) { + public void broadcastBossHpMessage(MapleMonster mm, int bossHash, Packet packet) { broadcastBossHpMessage(mm, bossHash, null, packet, Double.POSITIVE_INFINITY, null); } - public void broadcastBossHpMessage(MapleMonster mm, int bossHash, final byte[] packet, Point rangedFrom) { + public void broadcastBossHpMessage(MapleMonster mm, int bossHash, Packet packet, Point rangedFrom) { broadcastBossHpMessage(mm, bossHash, null, packet, getRangedDistance(), rangedFrom); } - private void broadcastBossHpMessage(MapleMonster mm, int bossHash, MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) { + private void broadcastBossHpMessage(MapleMonster mm, int bossHash, MapleCharacter source, Packet packet, double rangeSq, Point rangedFrom) { chrRLock.lock(); try { for (MapleCharacter chr : characters) { @@ -2847,14 +2841,14 @@ public class MapleMap { chrRLock.lock(); try { for (MapleCharacter chr : characters) { - final byte[] packet = PacketCreator.dropItemFromMapObject(chr, mdrop, dropperPos, dropPos, mod); + Packet packet = PacketCreator.dropItemFromMapObject(chr, mdrop, dropperPos, dropPos, mod); if (rangeSq < Double.POSITIVE_INFINITY) { if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) { - chr.announce(packet); + chr.sendPacket(packet); } } else { - chr.announce(packet); + chr.sendPacket(packet); } } } finally { @@ -2877,14 +2871,14 @@ public class MapleMap { for (MapleCharacter chr : characters) { if (chr.isGM()) { if (chr != source) { - chr.announce(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField)); + chr.sendPacket(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField)); } } } } else { for (MapleCharacter chr : characters) { if (chr != source) { - chr.announce(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField)); + chr.sendPacket(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField)); } } } @@ -2898,7 +2892,7 @@ public class MapleMap { try { for (MapleCharacter chr : characters) { if (chr != source) { - chr.announce(PacketCreator.updateCharLook(chr.getClient(), player)); + chr.sendPacket(PacketCreator.updateCharLook(chr.getClient(), player)); } } } finally { @@ -3723,21 +3717,21 @@ public class MapleMap { return seats; } - public void broadcastGMMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) { + public void broadcastGMMessage(MapleCharacter source, Packet packet, boolean repeatToSource) { broadcastGMMessage(repeatToSource ? null : source, packet, Double.POSITIVE_INFINITY, source.getPosition()); } - private void broadcastGMMessage(MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) { + private void broadcastGMMessage(MapleCharacter source, Packet packet, double rangeSq, Point rangedFrom) { chrRLock.lock(); try { for (MapleCharacter chr : characters) { if (chr != source && chr.isGM()) { if (rangeSq < Double.POSITIVE_INFINITY) { if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) { - chr.getClient().announce(packet); + chr.sendPacket(packet); } } else { - chr.getClient().announce(packet); + chr.sendPacket(packet); } } } @@ -3746,12 +3740,12 @@ public class MapleMap { } } - public void broadcastNONGMMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) { + public void broadcastNONGMMessage(MapleCharacter source, Packet packet, boolean repeatToSource) { chrRLock.lock(); try { for (MapleCharacter chr : characters) { if (chr != source && !chr.isGM()) { - chr.getClient().announce(packet); + chr.sendPacket(packet); } } } finally { diff --git a/src/main/java/server/maps/MapleMapEffect.java b/src/main/java/server/maps/MapleMapEffect.java index 0b304f806b..1ff5ff66b2 100644 --- a/src/main/java/server/maps/MapleMapEffect.java +++ b/src/main/java/server/maps/MapleMapEffect.java @@ -22,27 +22,28 @@ package server.maps; import client.MapleClient; +import net.packet.Packet; import tools.PacketCreator; public class MapleMapEffect { - private String msg; - private int itemId; - private boolean active = true; + private final String msg; + private final int itemId; + private final boolean active = true; public MapleMapEffect(String msg, int itemId) { this.msg = msg; this.itemId = itemId; } - public final byte[] makeDestroyData() { + public final Packet makeDestroyData() { return PacketCreator.removeMapEffect(); } - public final byte[] makeStartData() { + public final Packet makeStartData() { return PacketCreator.startMapEffect(msg, itemId, active); } public void sendStartData(MapleClient client) { - client.announce(makeStartData()); + client.sendPacket(makeStartData()); } } diff --git a/src/main/java/server/maps/MapleMapItem.java b/src/main/java/server/maps/MapleMapItem.java index 16f4c231d2..fc95654920 100644 --- a/src/main/java/server/maps/MapleMapItem.java +++ b/src/main/java/server/maps/MapleMapItem.java @@ -41,56 +41,58 @@ public class MapleMapItem extends AbstractMapleMapObject { private Lock itemLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_ITEM); public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, MapleClient ownerClient, byte type, boolean playerDrop) { - setPosition(position); - this.item = item; - this.dropper = dropper; + setPosition(position); + this.item = item; + this.dropper = dropper; this.character_ownerid = owner.getId(); this.party_ownerid = owner.getPartyId(); this.partyDrop = this.party_ownerid != -1; this.ownerClient = owner.getClient(); - this.meso = 0; - this.type = type; - this.playerDrop = playerDrop; + this.meso = 0; + this.type = type; + this.playerDrop = playerDrop; } public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, MapleClient ownerClient, byte type, boolean playerDrop, int questid) { - setPosition(position); - this.item = item; - this.dropper = dropper; + setPosition(position); + this.item = item; + this.dropper = dropper; this.character_ownerid = owner.getId(); this.party_ownerid = owner.getPartyId(); this.partyDrop = this.party_ownerid != -1; - this.ownerClient = owner.getClient(); + this.ownerClient = owner.getClient(); this.meso = 0; - this.type = type; - this.playerDrop = playerDrop; - this.questid = questid; + this.type = type; + this.playerDrop = playerDrop; + this.questid = questid; } public MapleMapItem(int meso, Point position, MapleMapObject dropper, MapleCharacter owner, MapleClient ownerClient, byte type, boolean playerDrop) { - setPosition(position); - this.item = null; - this.dropper = dropper; - this.character_ownerid = owner.getId(); + setPosition(position); + this.item = null; + this.dropper = dropper; + this.character_ownerid = owner.getId(); this.party_ownerid = owner.getPartyId(); this.partyDrop = this.party_ownerid != -1; this.ownerClient = owner.getClient(); this.meso = meso; - this.type = type; - this.playerDrop = playerDrop; + this.type = type; + this.playerDrop = playerDrop; } public final Item getItem() { - return item; + return item; } public final int getQuest() { - return questid; + return questid; } public final int getItemId() { - if (meso > 0) return meso; - return item.getItemId(); + if (meso > 0) { + return meso; + } + return item.getItemId(); } public final MapleMapObject getDropper() { @@ -203,7 +205,7 @@ public class MapleMapItem extends AbstractMapleMapObject { if (chr.needQuestItem(questid, getItemId())) { this.lockItem(); try { - client.announce(PacketCreator.dropItemFromMapObject(chr, this, null, getPosition(), (byte) 2)); + client.sendPacket(PacketCreator.dropItemFromMapObject(chr, this, null, getPosition(), (byte) 2)); } finally { this.unlockItem(); } @@ -212,6 +214,6 @@ public class MapleMapItem extends AbstractMapleMapObject { @Override public void sendDestroyData(final MapleClient client) { - client.announce(PacketCreator.removeItemFromMap(getObjectId(), 1, 0)); + client.sendPacket(PacketCreator.removeItemFromMap(getObjectId(), 1, 0)); } } \ No newline at end of file diff --git a/src/main/java/server/maps/MapleMiniDungeon.java b/src/main/java/server/maps/MapleMiniDungeon.java index 2fb9ffa62c..6e3868077e 100644 --- a/src/main/java/server/maps/MapleMiniDungeon.java +++ b/src/main/java/server/maps/MapleMiniDungeon.java @@ -53,7 +53,7 @@ public class MapleMiniDungeon { public boolean registerPlayer(MapleCharacter chr) { int time = (int)((expireTime - System.currentTimeMillis()) / 1000); - if(time > 0) chr.getClient().announce(PacketCreator.getClock(time)); + if(time > 0) chr.sendPacket(PacketCreator.getClock(time)); lock.lock(); try { @@ -68,7 +68,7 @@ public class MapleMiniDungeon { } public boolean unregisterPlayer(MapleCharacter chr) { - chr.getClient().announce(PacketCreator.removeClock()); + chr.sendPacket(PacketCreator.removeClock()); lock.lock(); try { diff --git a/src/main/java/server/maps/MapleMiniGame.java b/src/main/java/server/maps/MapleMiniGame.java index 6427bea47c..e211bc1cdc 100644 --- a/src/main/java/server/maps/MapleMiniGame.java +++ b/src/main/java/server/maps/MapleMiniGame.java @@ -23,6 +23,7 @@ package server.maps; import client.MapleCharacter; import client.MapleClient; +import net.packet.Packet; import net.server.Server; import tools.PacketCreator; @@ -107,10 +108,10 @@ public class MapleMiniGame extends AbstractMapleMapObject { MapleCharacter owner = this.getOwner(); if (GameType == MiniGameType.OMOK) { - owner.announce(PacketCreator.getMiniGameNewVisitor(this, challenger, 1)); + owner.sendPacket(PacketCreator.getMiniGameNewVisitor(this, challenger, 1)); owner.getMap().broadcastMessage(PacketCreator.addOmokBox(owner, 2, 0)); } else if (GameType == MiniGameType.MATCH_CARD) { - owner.announce(PacketCreator.getMatchCardNewVisitor(this, challenger, 1)); + owner.sendPacket(PacketCreator.getMatchCardNewVisitor(this, challenger, 1)); owner.getMap().broadcastMessage(PacketCreator.addMatchCardBox(owner, 2, 0)); } } @@ -135,13 +136,13 @@ public class MapleMiniGame extends AbstractMapleMapObject { public void removeVisitor(boolean forceClose, MapleCharacter challenger) { if (visitor == challenger) { if (forceClose) { - visitor.announce(PacketCreator.getMiniGameClose(true, 4)); + visitor.sendPacket(PacketCreator.getMiniGameClose(true, 4)); } challenger.setMiniGame(null); visitor = null; - this.getOwner().getClient().announce(PacketCreator.getMiniGameRemoveVisitor()); + this.getOwner().sendPacket(PacketCreator.getMiniGameRemoveVisitor()); if (GameType == MiniGameType.OMOK) { this.getOwner().getMap().broadcastMessage(PacketCreator.addOmokBox(owner, 1, 0)); } else if (GameType == MiniGameType.MATCH_CARD) { @@ -154,16 +155,16 @@ public class MapleMiniGame extends AbstractMapleMapObject { return visitor == challenger; } - public void broadcastToOwner(final byte[] packet) { + public void broadcastToOwner(Packet packet) { MapleClient c = owner.getClient(); if (c != null) { - c.announce(packet); + c.sendPacket(packet); } } - public void broadcastToVisitor(final byte[] packet) { + public void broadcastToVisitor(Packet packet) { if (visitor != null) { - visitor.getClient().announce(packet); + visitor.sendPacket(packet); } } @@ -384,7 +385,7 @@ public class MapleMiniGame extends AbstractMapleMapObject { return loser; } - public void broadcast(final byte[] packet) { + public void broadcast(Packet packet) { broadcastToOwner(packet); broadcastToVisitor(packet); } @@ -394,11 +395,11 @@ public class MapleMiniGame extends AbstractMapleMapObject { } public void sendOmok(MapleClient c, int type) { - c.announce(PacketCreator.getMiniGame(c, this, isOwner(c.getPlayer()), type)); + c.sendPacket(PacketCreator.getMiniGame(c, this, isOwner(c.getPlayer()), type)); } public void sendMatchCard(MapleClient c, int type) { - c.announce(PacketCreator.getMatchCard(c, this, isOwner(c.getPlayer()), type)); + c.sendPacket(PacketCreator.getMatchCard(c, this, isOwner(c.getPlayer()), type)); } public MapleCharacter getOwner() { diff --git a/src/main/java/server/maps/MapleMist.java b/src/main/java/server/maps/MapleMist.java index 941175e16e..9531bfc25a 100644 --- a/src/main/java/server/maps/MapleMist.java +++ b/src/main/java/server/maps/MapleMist.java @@ -26,6 +26,7 @@ import client.MapleClient; import client.Skill; import client.SkillFactory; import constants.skills.*; +import net.packet.Packet; import server.MapleStatEffect; import server.life.MapleMonster; import server.life.MobSkill; @@ -128,18 +129,18 @@ public class MapleMist extends AbstractMapleMapObject { throw new UnsupportedOperationException(); } - public final byte[] makeDestroyData() { + public final Packet makeDestroyData() { return PacketCreator.removeMist(getObjectId()); } - public final byte[] makeSpawnData() { + public final Packet makeSpawnData() { if (owner != null) { return PacketCreator.spawnMist(getObjectId(), owner.getId(), getSourceSkill().getId(), owner.getSkillLevel(SkillFactory.getSkill(source.getSourceId())), this); } return PacketCreator.spawnMist(getObjectId(), mob.getId(), skill.getSkillId(), skill.getSkillLevel(), this); } - public final byte[] makeFakeSpawnData(int level) { + public final Packet makeFakeSpawnData(int level) { if (owner != null) { return PacketCreator.spawnMist(getObjectId(), owner.getId(), getSourceSkill().getId(), level, this); } @@ -148,12 +149,12 @@ public class MapleMist extends AbstractMapleMapObject { @Override public void sendSpawnData(MapleClient client) { - client.announce(makeSpawnData()); + client.sendPacket(makeSpawnData()); } @Override public void sendDestroyData(MapleClient client) { - client.announce(makeDestroyData()); + client.sendPacket(makeDestroyData()); } public boolean makeChanceResult() { diff --git a/src/main/java/server/maps/MaplePlayerShop.java b/src/main/java/server/maps/MaplePlayerShop.java index 81d912857e..9b6edd44a1 100644 --- a/src/main/java/server/maps/MaplePlayerShop.java +++ b/src/main/java/server/maps/MaplePlayerShop.java @@ -29,6 +29,7 @@ import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; import net.opcodes.SendOpcode; +import net.packet.Packet; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.MapleTrade; @@ -169,13 +170,13 @@ public class MaplePlayerShop extends AbstractMapleMapObject { visitor.setSlot(-1); //absolutely cant remove player slot for late players without dc'ing them... heh for(int j = i; j < 2; j++) { - if(visitors[j] != null) owner.announce(PacketCreator.getPlayerShopRemoveVisitor(j + 1)); + if(visitors[j] != null) owner.sendPacket(PacketCreator.getPlayerShopRemoveVisitor(j + 1)); visitors[j] = visitors[j + 1]; if(visitors[j] != null) visitors[j].setSlot(j); } visitors[2] = null; for(int j = i; j < 2; j++) { - if(visitors[j] != null) owner.announce(PacketCreator.getPlayerShopNewVisitor(visitors[j], j + 1)); + if(visitors[j] != null) owner.sendPacket(PacketCreator.getPlayerShopNewVisitor(visitors[j], j + 1)); } this.broadcastRestoreToVisitors(); @@ -226,8 +227,8 @@ public class MaplePlayerShop extends AbstractMapleMapObject { iitem.setQuantity((short) (shopItem.getItem().getQuantity() * shopItem.getBundles())); if (!MapleInventory.checkSpot(chr, iitem)) { - chr.announce(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item.")); - chr.announce(PacketCreator.enableActions()); + chr.sendPacket(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item.")); + chr.sendPacket(PacketCreator.enableActions()); return; } @@ -235,7 +236,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject { } removeFromSlot(slot); - chr.announce(PacketCreator.getPlayerShopItemUpdate(this)); + chr.sendPacket(PacketCreator.getPlayerShopItemUpdate(this)); } } } @@ -254,10 +255,10 @@ public class MaplePlayerShop extends AbstractMapleMapObject { newItem.setQuantity((short) ((pItem.getItem().getQuantity() * quantity))); if (quantity < 1 || !pItem.isExist() || pItem.getBundles() < quantity) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } else if (newItem.getInventoryType().equals(MapleInventoryType.EQUIP) && newItem.getQuantity() > 1) { - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -270,7 +271,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject { if (c.getPlayer().getMeso() >= price) { if (!owner.canHoldMeso(price)) { // thanks Rohenn for noticing owner hold check misplaced c.getPlayer().dropMessage(1, "Transaction failed since the shop owner can't hold any more mesos."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -280,7 +281,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject { owner.gainMeso(price, true); SoldItem soldItem = new SoldItem(c.getPlayer().getName(), pItem.getItem().getItemId(), quantity, price); - owner.announce(PacketCreator.getPlayerShopOwnerUpdate(soldItem, item)); + owner.sendPacket(PacketCreator.getPlayerShopOwnerUpdate(soldItem, item)); synchronized (sold) { sold.add(soldItem); @@ -298,12 +299,12 @@ public class MaplePlayerShop extends AbstractMapleMapObject { } } else { c.getPlayer().dropMessage(1, "Your inventory is full. Please clear a slot before buying this item."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } } else { c.getPlayer().dropMessage(1, "You don't have enough mesos to purchase this item."); - c.announce(PacketCreator.enableActions()); + c.sendPacket(PacketCreator.enableActions()); return false; } @@ -317,12 +318,12 @@ public class MaplePlayerShop extends AbstractMapleMapObject { } } - public void broadcastToVisitors(final byte[] packet) { + public void broadcastToVisitors(Packet packet) { visitorLock.lock(); try { for (int i = 0; i < 3; i++) { if (visitors[i] != null) { - visitors[i].getClient().announce(packet); + visitors[i].sendPacket(packet); } } } finally { @@ -335,13 +336,13 @@ public class MaplePlayerShop extends AbstractMapleMapObject { try { for (int i = 0; i < 3; i++) { if (visitors[i] != null) { - visitors[i].getClient().announce(PacketCreator.getPlayerShopRemoveVisitor(i + 1)); + visitors[i].sendPacket(PacketCreator.getPlayerShopRemoveVisitor(i + 1)); } } for (int i = 0; i < 3; i++) { if (visitors[i] != null) { - visitors[i].getClient().announce(PacketCreator.getPlayerShop(this, false)); + visitors[i].sendPacket(PacketCreator.getPlayerShop(this, false)); } } @@ -359,7 +360,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject { try { for (int i = 0; i < 3; i++) { if (visitors[i] != null) { - visitors[i].getClient().announce(PacketCreator.shopErrorMessage(10, 1)); + visitors[i].sendPacket(PacketCreator.shopErrorMessage(10, 1)); visitorList.add(visitors[i]); } } @@ -385,10 +386,10 @@ public class MaplePlayerShop extends AbstractMapleMapObject { return mplew.getPacket(); } - public void broadcast(final byte[] packet) { + public void broadcast(Packet packet) { MapleClient client = owner.getClient(); if (client != null) { - client.announce(packet); + client.sendPacket(packet); } broadcastToVisitors(packet); } @@ -447,7 +448,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject { public void sendShop(MapleClient c) { visitorLock.lock(); try { - c.announce(PacketCreator.getPlayerShop(this, isOwner(c.getPlayer()))); + c.sendPacket(PacketCreator.getPlayerShop(this, isOwner(c.getPlayer()))); } finally { visitorLock.unlock(); } @@ -512,7 +513,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject { } if(target != null) { - target.getClient().announce(PacketCreator.shopErrorMessage(5, 1)); + target.sendPacket(PacketCreator.shopErrorMessage(5, 1)); removeVisitor(target); } } @@ -572,12 +573,12 @@ public class MaplePlayerShop extends AbstractMapleMapObject { @Override public void sendDestroyData(MapleClient client) { - client.announce(PacketCreator.removePlayerShopBox(this)); + client.sendPacket(PacketCreator.removePlayerShopBox(this)); } @Override public void sendSpawnData(MapleClient client) { - client.announce(PacketCreator.updatePlayerShopBox(this)); + client.sendPacket(PacketCreator.updatePlayerShopBox(this)); } @Override diff --git a/src/main/java/server/maps/MapleReactor.java b/src/main/java/server/maps/MapleReactor.java index d821ded0f8..99e9098584 100644 --- a/src/main/java/server/maps/MapleReactor.java +++ b/src/main/java/server/maps/MapleReactor.java @@ -23,6 +23,7 @@ package server.maps; import client.MapleClient; import config.YamlConfig; +import net.packet.Packet; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.services.task.channel.OverallService; @@ -166,21 +167,21 @@ public class MapleReactor extends AbstractMapleMapObject { @Override public void sendDestroyData(MapleClient client) { - client.announce(makeDestroyData()); + client.sendPacket(makeDestroyData()); } - public final byte[] makeDestroyData() { + public final Packet makeDestroyData() { return PacketCreator.destroyReactor(this); } @Override public void sendSpawnData(MapleClient client) { if (this.isAlive()) { - client.announce(makeSpawnData()); + client.sendPacket(makeSpawnData()); } } - public final byte[] makeSpawnData() { + public final Packet makeSpawnData() { return PacketCreator.spawnReactor(this); } diff --git a/src/main/java/server/maps/MapleSummon.java b/src/main/java/server/maps/MapleSummon.java index 714235f838..ec1f7de170 100644 --- a/src/main/java/server/maps/MapleSummon.java +++ b/src/main/java/server/maps/MapleSummon.java @@ -50,12 +50,12 @@ public class MapleSummon extends AbstractAnimatedMapleMapObject { @Override public void sendSpawnData(MapleClient client) { - client.announce(PacketCreator.spawnSummon(this, false)); + client.sendPacket(PacketCreator.spawnSummon(this, false)); } @Override public void sendDestroyData(MapleClient client) { - client.announce(PacketCreator.removeSummon(this, true)); + client.sendPacket(PacketCreator.removeSummon(this, true)); } public MapleCharacter getOwner() { diff --git a/src/main/java/server/minigame/MapleRockPaperScissor.java b/src/main/java/server/minigame/MapleRockPaperScissor.java index 86b5b183b4..5cf1d19e84 100644 --- a/src/main/java/server/minigame/MapleRockPaperScissor.java +++ b/src/main/java/server/minigame/MapleRockPaperScissor.java @@ -18,7 +18,7 @@ public class MapleRockPaperScissor{ private boolean win = false; public MapleRockPaperScissor(final MapleClient c, final byte mode){ - c.announce(PacketCreator.rpsMode((byte) (9 + mode))); + c.sendPacket(PacketCreator.rpsMode((byte) (9 + mode))); if(mode == 0){ c.getPlayer().gainMeso(-1000, true, true, true); } @@ -28,14 +28,14 @@ public class MapleRockPaperScissor{ if(ableAnswer && !win && answer >= 0 && answer <= 2){ final int response = Randomizer.nextInt(3); if(response == answer){ - c.announce(PacketCreator.rpsSelection((byte) response, (byte) round)); + c.sendPacket(PacketCreator.rpsSelection((byte) response, (byte) round)); // dont do anything. they can still answer once a draw }else if((answer == 0 && response == 2) || (answer == 1 && response == 0) || (answer == 2 && response == 1)){ // they win - c.announce(PacketCreator.rpsSelection((byte) response, (byte) (round + 1))); + c.sendPacket(PacketCreator.rpsSelection((byte) response, (byte) (round + 1))); ableAnswer = false; win = true; }else{ // they lose - c.announce(PacketCreator.rpsSelection((byte) response, (byte) -1)); + c.sendPacket(PacketCreator.rpsSelection((byte) response, (byte) -1)); ableAnswer = false; } return true; @@ -47,7 +47,7 @@ public class MapleRockPaperScissor{ public final boolean timeOut(final MapleClient c){ if(ableAnswer && !win){ ableAnswer = false; - c.announce(PacketCreator.rpsMode((byte) 0x0A)); + c.sendPacket(PacketCreator.rpsMode((byte) 0x0A)); return true; } reward(c); @@ -60,7 +60,7 @@ public class MapleRockPaperScissor{ if(round < 10){ win = false; ableAnswer = true; - c.announce(PacketCreator.rpsMode((byte) 0x0C)); + c.sendPacket(PacketCreator.rpsMode((byte) 0x0C)); return true; } else { round = 10; @@ -79,6 +79,6 @@ public class MapleRockPaperScissor{ public final void dispose(final MapleClient c){ reward(c); - c.announce(PacketCreator.rpsMode((byte) 0x0D)); + c.sendPacket(PacketCreator.rpsMode((byte) 0x0D)); } } diff --git a/src/main/java/server/movement/AbsoluteLifeMovement.java b/src/main/java/server/movement/AbsoluteLifeMovement.java index ba4273e8b8..219b0aea8a 100644 --- a/src/main/java/server/movement/AbsoluteLifeMovement.java +++ b/src/main/java/server/movement/AbsoluteLifeMovement.java @@ -21,8 +21,9 @@ */ package server.movement; -import java.awt.Point; -import tools.data.output.LittleEndianWriter; +import net.packet.OutPacket; + +import java.awt.*; public class AbsoluteLifeMovement extends AbstractLifeMovement { private Point pixelsPerSecond; @@ -49,14 +50,12 @@ public class AbsoluteLifeMovement extends AbstractLifeMovement { } @Override - public void serialize(LittleEndianWriter lew) { - lew.write(getType()); - lew.writeShort(getPosition().x); - lew.writeShort(getPosition().y); - lew.writeShort(pixelsPerSecond.x); - lew.writeShort(pixelsPerSecond.y); - lew.writeShort(fh); - lew.write(getNewstate()); - lew.writeShort(getDuration()); + public void serialize(OutPacket p) { + p.writeByte(getType()); + p.writePos(getPosition()); + p.writePos(pixelsPerSecond); + p.writeShort(fh); + p.writeByte(getNewstate()); + p.writeShort(getDuration()); } } diff --git a/src/main/java/server/movement/ChairMovement.java b/src/main/java/server/movement/ChairMovement.java index 3e8eb1b053..d561fb7cf8 100644 --- a/src/main/java/server/movement/ChairMovement.java +++ b/src/main/java/server/movement/ChairMovement.java @@ -21,8 +21,9 @@ */ package server.movement; -import java.awt.Point; -import tools.data.output.LittleEndianWriter; +import net.packet.OutPacket; + +import java.awt.*; public class ChairMovement extends AbstractLifeMovement { private int fh; @@ -40,13 +41,12 @@ public class ChairMovement extends AbstractLifeMovement { } @Override - public void serialize(LittleEndianWriter lew) { - lew.write(getType()); - lew.writeShort(getPosition().x); - lew.writeShort(getPosition().y); - lew.writeShort(fh); - lew.write(getNewstate()); - lew.writeShort(getDuration()); + public void serialize(OutPacket p) { + p.writeByte(getType()); + p.writePos(getPosition()); + p.writeShort(fh); + p.writeByte(getNewstate()); + p.writeShort(getDuration()); } } diff --git a/src/main/java/server/movement/ChangeEquip.java b/src/main/java/server/movement/ChangeEquip.java index b9708b7cb9..32c7fc0dd8 100644 --- a/src/main/java/server/movement/ChangeEquip.java +++ b/src/main/java/server/movement/ChangeEquip.java @@ -21,20 +21,21 @@ */ package server.movement; -import java.awt.Point; -import tools.data.output.LittleEndianWriter; +import net.packet.OutPacket; + +import java.awt.*; public class ChangeEquip implements LifeMovementFragment { - private int wui; + private final int wui; public ChangeEquip(int wui) { this.wui = wui; } @Override - public void serialize(LittleEndianWriter lew) { - lew.write(10); - lew.write(wui); + public void serialize(OutPacket p) { + p.writeByte(10); + p.writeByte(wui); } @Override diff --git a/src/main/java/server/movement/JumpDownMovement.java b/src/main/java/server/movement/JumpDownMovement.java index b60f6c19d4..41fe96eaa9 100644 --- a/src/main/java/server/movement/JumpDownMovement.java +++ b/src/main/java/server/movement/JumpDownMovement.java @@ -21,8 +21,9 @@ */ package server.movement; -import java.awt.Point; -import tools.data.output.LittleEndianWriter; +import net.packet.OutPacket; + +import java.awt.*; public class JumpDownMovement extends AbstractLifeMovement { private Point pixelsPerSecond; @@ -58,15 +59,13 @@ public class JumpDownMovement extends AbstractLifeMovement { } @Override - public void serialize(LittleEndianWriter lew) { - lew.write(getType()); - lew.writeShort(getPosition().x); - lew.writeShort(getPosition().y); - lew.writeShort(pixelsPerSecond.x); - lew.writeShort(pixelsPerSecond.y); - lew.writeShort(fh); - lew.writeShort(originFh); - lew.write(getNewstate()); - lew.writeShort(getDuration()); + public void serialize(OutPacket p) { + p.writeByte(getType()); + p.writePos(getPosition()); + p.writePos(pixelsPerSecond); + p.writeShort(fh); + p.writeShort(originFh); + p.writeByte(getNewstate()); + p.writeShort(getDuration()); } } diff --git a/src/main/java/server/movement/LifeMovementFragment.java b/src/main/java/server/movement/LifeMovementFragment.java index cded87b7c8..12f57c3d09 100644 --- a/src/main/java/server/movement/LifeMovementFragment.java +++ b/src/main/java/server/movement/LifeMovementFragment.java @@ -21,10 +21,11 @@ */ package server.movement; -import java.awt.Point; -import tools.data.output.LittleEndianWriter; +import net.packet.OutPacket; + +import java.awt.*; public interface LifeMovementFragment { - void serialize(LittleEndianWriter lew); + void serialize(OutPacket p); Point getPosition(); } diff --git a/src/main/java/server/movement/RelativeLifeMovement.java b/src/main/java/server/movement/RelativeLifeMovement.java index 64283e647f..0e5e55cb01 100644 --- a/src/main/java/server/movement/RelativeLifeMovement.java +++ b/src/main/java/server/movement/RelativeLifeMovement.java @@ -21,8 +21,9 @@ */ package server.movement; -import java.awt.Point; -import tools.data.output.LittleEndianWriter; +import net.packet.OutPacket; + +import java.awt.*; public class RelativeLifeMovement extends AbstractLifeMovement { public RelativeLifeMovement(int type, Point position, int duration, int newstate) { @@ -30,11 +31,10 @@ public class RelativeLifeMovement extends AbstractLifeMovement { } @Override - public void serialize(LittleEndianWriter lew) { - lew.write(getType()); - lew.writeShort(getPosition().x); - lew.writeShort(getPosition().y); - lew.write(getNewstate()); - lew.writeShort(getDuration()); + public void serialize(OutPacket p) { + p.writeByte(getType()); + p.writePos(getPosition()); + p.writeByte(getNewstate()); + p.writeShort(getDuration()); } } diff --git a/src/main/java/server/movement/TeleportMovement.java b/src/main/java/server/movement/TeleportMovement.java index 2d70d72cf1..5be0903f72 100644 --- a/src/main/java/server/movement/TeleportMovement.java +++ b/src/main/java/server/movement/TeleportMovement.java @@ -20,8 +20,9 @@ */ package server.movement; -import java.awt.Point; -import tools.data.output.LittleEndianWriter; +import net.packet.OutPacket; + +import java.awt.*; public class TeleportMovement extends AbsoluteLifeMovement { @@ -30,12 +31,10 @@ public class TeleportMovement extends AbsoluteLifeMovement { } @Override - public void serialize(LittleEndianWriter lew) { - lew.write(getType()); - lew.writeShort(getPosition().x); - lew.writeShort(getPosition().y); - lew.writeShort(getPixelsPerSecond().x); - lew.writeShort(getPixelsPerSecond().y); - lew.write(getNewstate()); + public void serialize(OutPacket p) { + p.writeByte(getType()); + p.writePos(getPosition()); + p.writePos(getPixelsPerSecond()); + p.writeByte(getNewstate()); } } diff --git a/src/main/java/server/partyquest/AriantColiseum.java b/src/main/java/server/partyquest/AriantColiseum.java index 735a2d2ad1..9f0a385906 100644 --- a/src/main/java/server/partyquest/AriantColiseum.java +++ b/src/main/java/server/partyquest/AriantColiseum.java @@ -76,7 +76,7 @@ public class AriantColiseum { } for (MapleCharacter mc : players) { - mc.announce(PacketCreator.updateAriantPQRanking(score)); + mc.sendPacket(PacketCreator.updateAriantPQRanking(score)); } setAriantScoreBoard(TimerManager.getInstance().schedule(() -> showArenaResults(), pqTimerBoard)); @@ -144,7 +144,7 @@ public class AriantColiseum { private void broadcastAriantScoreUpdate() { if (scoreDirty) { for (MapleCharacter chr : score.keySet()) { - chr.announce(PacketCreator.updateAriantPQRanking(score)); + chr.sendPacket(PacketCreator.updateAriantPQRanking(score)); } scoreDirty = false; } diff --git a/src/main/java/server/partyquest/MonsterCarnival.java b/src/main/java/server/partyquest/MonsterCarnival.java index 3151a47d9a..f31e506a40 100644 --- a/src/main/java/server/partyquest/MonsterCarnival.java +++ b/src/main/java/server/partyquest/MonsterCarnival.java @@ -374,12 +374,12 @@ public class MonsterCarnival { MapleCharacter mc = mpc.getPlayer(); if (mc != null) { if (redWin) { - mc.getClient().announce(PacketCreator.showEffect("quest/carnival/win")); - mc.getClient().announce(PacketCreator.playSound("MobCarnival/Win")); + mc.sendPacket(PacketCreator.showEffect("quest/carnival/win")); + mc.sendPacket(PacketCreator.playSound("MobCarnival/Win")); mc.dispelDebuffs(); } else { - mc.getClient().announce(PacketCreator.showEffect("quest/carnival/lose")); - mc.getClient().announce(PacketCreator.playSound("MobCarnival/Lose")); + mc.sendPacket(PacketCreator.showEffect("quest/carnival/lose")); + mc.sendPacket(PacketCreator.playSound("MobCarnival/Lose")); mc.dispelDebuffs(); } } @@ -388,12 +388,12 @@ public class MonsterCarnival { MapleCharacter mc = mpc.getPlayer(); if (mc != null) { if (!redWin) { - mc.getClient().announce(PacketCreator.showEffect("quest/carnival/win")); - mc.getClient().announce(PacketCreator.playSound("MobCarnival/Win")); + mc.sendPacket(PacketCreator.showEffect("quest/carnival/win")); + mc.sendPacket(PacketCreator.playSound("MobCarnival/Win")); mc.dispelDebuffs(); } else { - mc.getClient().announce(PacketCreator.showEffect("quest/carnival/lose")); - mc.getClient().announce(PacketCreator.playSound("MobCarnival/Lose")); + mc.sendPacket(PacketCreator.showEffect("quest/carnival/lose")); + mc.sendPacket(PacketCreator.playSound("MobCarnival/Lose")); mc.dispelDebuffs(); } } diff --git a/src/main/java/server/partyquest/MonsterCarnivalParty.java b/src/main/java/server/partyquest/MonsterCarnivalParty.java index 7058163bc2..c76294f3e6 100644 --- a/src/main/java/server/partyquest/MonsterCarnivalParty.java +++ b/src/main/java/server/partyquest/MonsterCarnivalParty.java @@ -112,7 +112,7 @@ public class MonsterCarnivalParty { final String effect = winner ? "quest/carnival/win" : "quest/carnival/lose"; for (final MapleCharacter chr : members) { - chr.announce(PacketCreator.showEffect(effect)); + chr.sendPacket(PacketCreator.showEffect(effect)); } } diff --git a/src/main/java/server/partyquest/Pyramid.java b/src/main/java/server/partyquest/Pyramid.java index ff737cb9d4..9fa46ac2a6 100644 --- a/src/main/java/server/partyquest/Pyramid.java +++ b/src/main/java/server/partyquest/Pyramid.java @@ -151,8 +151,8 @@ public class Pyramid extends PartyQuest { public void broadcastInfo(String info, int amount) { for (MapleCharacter chr : getParticipants()) { - chr.announce(PacketCreator.getEnergy("massacre_" + info, amount)); - chr.announce(PacketCreator.pyramidGauge(count)); + chr.sendPacket(PacketCreator.getEnergy("massacre_" + info, amount)); + chr.sendPacket(PacketCreator.pyramidGauge(count)); } } @@ -177,7 +177,7 @@ public class Pyramid extends PartyQuest { skill++; MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); for (MapleCharacter chr : getParticipants()) { - chr.announce(PacketCreator.getEnergy("massacre_skill", skill)); + chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill)); ii.getItemEffect(2022586).applyTo(chr); } } else if (buffcount == 2 && total >= 1000) { @@ -185,7 +185,7 @@ public class Pyramid extends PartyQuest { skill++; MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); for (MapleCharacter chr : getParticipants()) { - chr.announce(PacketCreator.getEnergy("massacre_skill", skill)); + chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill)); ii.getItemEffect(2022587).applyTo(chr); } } else if (buffcount == 3 && total >= 1500) { @@ -196,7 +196,7 @@ public class Pyramid extends PartyQuest { skill++; MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); for (MapleCharacter chr : getParticipants()) { - chr.announce(PacketCreator.getEnergy("massacre_skill", skill)); + chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill)); ii.getItemEffect(2022588).applyTo(chr); } } else if (buffcount == 5 && total >= 2500) { @@ -229,7 +229,7 @@ public class Pyramid extends PartyQuest { exp += ((kill * 2) + (cool * 10)); } - chr.announce(PacketCreator.pyramidScore(rank, exp)); + chr.sendPacket(PacketCreator.pyramidScore(rank, exp)); chr.gainExp(exp, true, true); } } diff --git a/src/main/java/server/quest/MapleQuest.java b/src/main/java/server/quest/MapleQuest.java index 6dbacf6e2c..0a1fa61b09 100644 --- a/src/main/java/server/quest/MapleQuest.java +++ b/src/main/java/server/quest/MapleQuest.java @@ -315,7 +315,7 @@ public class MapleQuest { return false; } if (timeLimit > 0) { - chr.announce(PacketCreator.removeQuestTimeLimit(id)); + chr.sendPacket(PacketCreator.removeQuestTimeLimit(id)); } MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED); newStatus.setForfeited(chr.getQuest(this).getForfeited() + 1); @@ -361,7 +361,7 @@ public class MapleQuest { public boolean forceComplete(MapleCharacter chr, int npc) { if (timeLimit > 0) { - chr.announce(PacketCreator.removeQuestTimeLimit(id)); + chr.sendPacket(PacketCreator.removeQuestTimeLimit(id)); } MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.COMPLETED, npc); @@ -370,7 +370,7 @@ public class MapleQuest { newStatus.setCompletionTime(System.currentTimeMillis()); chr.updateQuestStatus(newStatus); - chr.announce(PacketCreator.showSpecialEffect(9)); // Quest completion + chr.sendPacket(PacketCreator.showSpecialEffect(9)); // Quest completion chr.getMap().broadcastMessage(chr, PacketCreator.showForeignEffect(chr.getId(), 9), false); //use 9 instead of 12 for both return true; } diff --git a/src/main/java/server/quest/actions/ItemAction.java b/src/main/java/server/quest/actions/ItemAction.java index 3cb5f02afc..84757d42bc 100644 --- a/src/main/java/server/quest/actions/ItemAction.java +++ b/src/main/java/server/quest/actions/ItemAction.java @@ -143,14 +143,14 @@ public class ItemAction extends MapleQuestAction { } MapleInventoryManipulator.removeById(chr.getClient(), type, itemid, quantity, true, false); - chr.announce(PacketCreator.getShowItemGain(itemid, (short) count, true)); + chr.sendPacket(PacketCreator.getShowItemGain(itemid, (short) count, true)); } for(ItemData iEntry: giveItem) { int itemid = iEntry.getId(), count = iEntry.getCount(), period = iEntry.getPeriod(); // thanks Vcoc for noticing quest milestone item not getting removed from inventory after a while MapleInventoryManipulator.addById(chr.getClient(), itemid, (short) count, "", -1, period > 0 ? (System.currentTimeMillis() + period * 60 * 1000) : -1); - chr.announce(PacketCreator.getShowItemGain(itemid, (short) count, true)); + chr.sendPacket(PacketCreator.getShowItemGain(itemid, (short) count, true)); } } diff --git a/src/main/java/server/quest/actions/NextQuestAction.java b/src/main/java/server/quest/actions/NextQuestAction.java index b4598e9c4c..dffece4878 100644 --- a/src/main/java/server/quest/actions/NextQuestAction.java +++ b/src/main/java/server/quest/actions/NextQuestAction.java @@ -50,6 +50,6 @@ public class NextQuestAction extends MapleQuestAction { @Override public void run(MapleCharacter chr, Integer extSelection) { MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); - chr.announce(PacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest)); + chr.sendPacket(PacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest)); } } diff --git a/src/main/java/tools/PacketCreator.java b/src/main/java/tools/PacketCreator.java index e3e0430b9f..fa0d8fe580 100644 --- a/src/main/java/tools/PacketCreator.java +++ b/src/main/java/tools/PacketCreator.java @@ -38,6 +38,7 @@ import constants.skills.Corsair; import constants.skills.ThunderBreaker; import net.encryption.InitializationVector; import net.opcodes.SendOpcode; +import net.packet.ByteBufOutPacket; import net.packet.OutPacket; import net.packet.Packet; import net.server.PlayerCoolDownValueHolder; @@ -48,7 +49,6 @@ import net.server.channel.handlers.SummonDamageHandler.SummonAttackEntry; import net.server.channel.handlers.WhisperHandler; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; -import net.server.guild.MapleGuildCharacter; import net.server.guild.MapleGuildSummary; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; @@ -67,8 +67,6 @@ import server.maps.*; import server.maps.MapleMiniGame.MiniGameResult; import server.movement.LifeMovementFragment; import tools.data.input.SeekableLittleEndianAccessor; -import tools.data.output.LittleEndianWriter; -import tools.data.output.MaplePacketLittleEndianWriter; import java.awt.*; import java.net.InetAddress; @@ -90,7 +88,7 @@ public class PacketCreator { public final static long ZERO_TIME = 94354848000000000L;//00 40 E0 FD 3B 37 4F 01 private final static long PERMANENT = 150841440000000000L; // 00 C0 9B 90 7D E5 17 02 - private static long getTime(long utcTimestamp) { + public static long getTime(long utcTimestamp) { if (utcTimestamp < 0 && utcTimestamp >= -3) { if (utcTimestamp == -1) { return DEFAULT_TIME; //high number ll @@ -104,16 +102,15 @@ public class PacketCreator { return utcTimestamp * 10000 + FT_UT_OFFSET; } - public static byte[] showHpHealed(int cid, int amount) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(0x0A); //Type - mplew.write(amount); - return mplew.getPacket(); + public static Packet showHpHealed(int cid, int amount) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(cid); + p.writeByte(0x0A); //Type + p.writeByte(amount); + return p; } - private static void addRemainingSkillInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addRemainingSkillInfo(final OutPacket p, MapleCharacter chr) { int[] remainingSp = chr.getRemainingSps(); int effectiveLength = 0; for (int j : remainingSp) { @@ -122,133 +119,133 @@ public class PacketCreator { } } - mplew.write(effectiveLength); + p.writeByte(effectiveLength); for (int i = 0; i < remainingSp.length; i++) { if (remainingSp[i] > 0) { - mplew.write(i + 1); - mplew.write(remainingSp[i]); + p.writeByte(i + 1); + p.writeByte(remainingSp[i]); } } } - private static void addCharStats(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.writeInt(chr.getId()); // character id - mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getName(), '\0', 13)); - mplew.write(chr.getGender()); // gender (0 = male, 1 = female) - mplew.write(chr.getSkinColor().getId()); // skin color - mplew.writeInt(chr.getFace()); // face - mplew.writeInt(chr.getHair()); // hair + private static void addCharStats(OutPacket p, MapleCharacter chr) { + p.writeInt(chr.getId()); // character id + p.writeFixedString(StringUtil.getRightPaddedStr(chr.getName(), '\0', 13)); + p.writeByte(chr.getGender()); // gender (0 = male, 1 = female) + p.writeByte(chr.getSkinColor().getId()); // skin color + p.writeInt(chr.getFace()); // face + p.writeInt(chr.getHair()); // hair for (int i = 0; i < 3; i++) { MaplePet pet = chr.getPet(i); if (pet != null) //Checked GMS.. and your pets stay when going into the cash shop. { - mplew.writeLong(pet.getUniqueId()); + p.writeLong(pet.getUniqueId()); } else { - mplew.writeLong(0); + p.writeLong(0); } } - mplew.write(chr.getLevel()); // level - mplew.writeShort(chr.getJob().getId()); // job - mplew.writeShort(chr.getStr()); // str - mplew.writeShort(chr.getDex()); // dex - mplew.writeShort(chr.getInt()); // int - mplew.writeShort(chr.getLuk()); // luk - mplew.writeShort(chr.getHp()); // hp (?) - mplew.writeShort(chr.getClientMaxHp()); // maxhp - mplew.writeShort(chr.getMp()); // mp (?) - mplew.writeShort(chr.getClientMaxMp()); // maxmp - mplew.writeShort(chr.getRemainingAp()); // remaining ap + p.writeByte(chr.getLevel()); // level + p.writeShort(chr.getJob().getId()); // job + p.writeShort(chr.getStr()); // str + p.writeShort(chr.getDex()); // dex + p.writeShort(chr.getInt()); // int + p.writeShort(chr.getLuk()); // luk + p.writeShort(chr.getHp()); // hp (?) + p.writeShort(chr.getClientMaxHp()); // maxhp + p.writeShort(chr.getMp()); // mp (?) + p.writeShort(chr.getClientMaxMp()); // maxmp + p.writeShort(chr.getRemainingAp()); // remaining ap if (GameConstants.hasSPTable(chr.getJob())) { - addRemainingSkillInfo(mplew, chr); + addRemainingSkillInfo(p, chr); } else { - mplew.writeShort(chr.getRemainingSp()); // remaining sp + p.writeShort(chr.getRemainingSp()); // remaining sp } - mplew.writeInt(chr.getExp()); // current exp - mplew.writeShort(chr.getFame()); // fame - mplew.writeInt(chr.getGachaExp()); //Gacha Exp - mplew.writeInt(chr.getMapId()); // current map id - mplew.write(chr.getInitialSpawnpoint()); // spawnpoint - mplew.writeInt(0); + p.writeInt(chr.getExp()); // current exp + p.writeShort(chr.getFame()); // fame + p.writeInt(chr.getGachaExp()); //Gacha Exp + p.writeInt(chr.getMapId()); // current map id + p.writeByte(chr.getInitialSpawnpoint()); // spawnpoint + p.writeInt(0); } - protected static void addCharLook(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr, boolean mega) { - mplew.write(chr.getGender()); - mplew.write(chr.getSkinColor().getId()); // skin color - mplew.writeInt(chr.getFace()); // face - mplew.write(mega ? 0 : 1); - mplew.writeInt(chr.getHair()); // hair - addCharEquips(mplew, chr); + protected static void addCharLook(final OutPacket p, MapleCharacter chr, boolean mega) { + p.writeByte(chr.getGender()); + p.writeByte(chr.getSkinColor().getId()); // skin color + p.writeInt(chr.getFace()); // face + p.writeBool(!mega); + p.writeInt(chr.getHair()); // hair + addCharEquips(p, chr); } - private static void addCharacterInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.writeLong(-1); - mplew.write(0); - addCharStats(mplew, chr); - mplew.write(chr.getBuddylist().getCapacity()); + private static void addCharacterInfo(OutPacket p, MapleCharacter chr) { + p.writeLong(-1); + p.writeByte(0); + addCharStats(p, chr); + p.writeByte(chr.getBuddylist().getCapacity()); if (chr.getLinkedName() == null) { - mplew.write(0); + p.writeByte(0); } else { - mplew.write(1); - mplew.writeMapleAsciiString(chr.getLinkedName()); + p.writeByte(1); + p.writeString(chr.getLinkedName()); } - mplew.writeInt(chr.getMeso()); - addInventoryInfo(mplew, chr); - addSkillInfo(mplew, chr); - addQuestInfo(mplew, chr); - addMiniGameInfo(mplew, chr); - addRingInfo(mplew, chr); - addTeleportInfo(mplew, chr); - addMonsterBookInfo(mplew, chr); - addNewYearInfo(mplew, chr); - addAreaInfo(mplew, chr);//assuming it stayed here xd - mplew.writeShort(0); + p.writeInt(chr.getMeso()); + addInventoryInfo(p, chr); + addSkillInfo(p, chr); + addQuestInfo(p, chr); + addMiniGameInfo(p, chr); + addRingInfo(p, chr); + addTeleportInfo(p, chr); + addMonsterBookInfo(p, chr); + addNewYearInfo(p, chr); + addAreaInfo(p, chr);//assuming it stayed here xd + p.writeShort(0); } - private static void addNewYearInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addNewYearInfo(OutPacket p, MapleCharacter chr) { Set received = chr.getReceivedNewYearRecords(); - mplew.writeShort(received.size()); + p.writeShort(received.size()); for (NewYearCardRecord nyc : received) { - encodeNewYearCard(nyc, mplew); + encodeNewYearCard(nyc, p); } } - private static void addTeleportInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addTeleportInfo(OutPacket p, MapleCharacter chr) { final List tele = chr.getTrockMaps(); final List viptele = chr.getVipTrockMaps(); for (int i = 0; i < 5; i++) { - mplew.writeInt(tele.get(i)); + p.writeInt(tele.get(i)); } for (int i = 0; i < 10; i++) { - mplew.writeInt(viptele.get(i)); + p.writeInt(viptele.get(i)); } } - private static void addMiniGameInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.writeShort(0); + private static void addMiniGameInfo(OutPacket p, MapleCharacter chr) { + p.writeShort(0); /*for (int m = size; m > 0; m--) {//nexon does this :P - mplew.writeInt(0); - mplew.writeInt(0); - mplew.writeInt(0); - mplew.writeInt(0); - mplew.writeInt(0); + p.writeInt(0); + p.writeInt(0); + p.writeInt(0); + p.writeInt(0); + p.writeInt(0); }*/ } - private static void addAreaInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addAreaInfo(OutPacket p, MapleCharacter chr) { Map areaInfos = chr.getAreaInfos(); - mplew.writeShort(areaInfos.size()); + p.writeShort(areaInfos.size()); for (Short area : areaInfos.keySet()) { - mplew.writeShort(area); - mplew.writeMapleAsciiString(areaInfos.get(area)); + p.writeShort(area); + p.writeString(areaInfos.get(area)); } } - private static void addCharEquips(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addCharEquips(final OutPacket p, MapleCharacter chr) { MapleInventory equip = chr.getInventory(MapleInventoryType.EQUIPPED); Collection ii = MapleItemInformationProvider.getInstance().canWearEquipment(chr, equip.list()); Map myEquip = new LinkedHashMap<>(); @@ -268,51 +265,50 @@ public class PacketCreator { } } for (Entry entry : myEquip.entrySet()) { - mplew.write(entry.getKey()); - mplew.writeInt(entry.getValue()); + p.writeByte(entry.getKey()); + p.writeInt(entry.getValue()); } - mplew.write(0xFF); + p.writeByte(0xFF); for (Entry entry : maskedEquip.entrySet()) { - mplew.write(entry.getKey()); - mplew.writeInt(entry.getValue()); + p.writeByte(entry.getKey()); + p.writeInt(entry.getValue()); } - mplew.write(0xFF); + p.writeByte(0xFF); Item cWeapon = equip.getItem((short) -111); - mplew.writeInt(cWeapon != null ? cWeapon.getItemId() : 0); + p.writeInt(cWeapon != null ? cWeapon.getItemId() : 0); for (int i = 0; i < 3; i++) { if (chr.getPet(i) != null) { - mplew.writeInt(chr.getPet(i).getItemId()); + p.writeInt(chr.getPet(i).getItemId()); } else { - mplew.writeInt(0); + p.writeInt(0); } } } - public static byte[] setExtraPendantSlot(boolean toggleExtraSlot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SET_EXTRA_PENDANT_SLOT.getValue()); - mplew.writeBool(toggleExtraSlot); - return mplew.getPacket(); + public static Packet setExtraPendantSlot(boolean toggleExtraSlot) { + final OutPacket p = OutPacket.create(SendOpcode.SET_EXTRA_PENDANT_SLOT); + p.writeBool(toggleExtraSlot); + return p; } - private static void addCharEntry(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr, boolean viewall) { - addCharStats(mplew, chr); - addCharLook(mplew, chr, false); + private static void addCharEntry(OutPacket p, MapleCharacter chr, boolean viewall) { + addCharStats(p, chr); + addCharLook(p, chr, false); if (!viewall) { - mplew.write(0); + p.writeByte(0); } if (chr.isGM() || chr.isGmJob()) { // thanks Daddy Egg (Ubaware), resinate for noticing GM jobs crashing on non-GM players account - mplew.write(0); + p.writeByte(0); return; } - mplew.write(1); // world rank enabled (next 4 ints are not sent if disabled) Short?? - mplew.writeInt(chr.getRank()); // world rank - mplew.writeInt(chr.getRankMove()); // move (negative is downwards) - mplew.writeInt(chr.getJobRank()); // job rank - mplew.writeInt(chr.getJobRankMove()); // move (negative is downwards) + p.writeByte(1); // world rank enabled (next 4 ints are not sent if disabled) Short?? + p.writeInt(chr.getRank()); // world rank + p.writeInt(chr.getRankMove()); // move (negative is downwards) + p.writeInt(chr.getJobRank()); // job rank + p.writeInt(chr.getJobRankMove()); // move (negative is downwards) } - private static void addQuestInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addQuestInfo(OutPacket p, MapleCharacter chr) { List started = chr.getStartedQuests(); int startedSize = 0; for (MapleQuestStatus qs : started) { @@ -321,35 +317,35 @@ public class PacketCreator { } startedSize++; } - mplew.writeShort(startedSize); + p.writeShort(startedSize); for (MapleQuestStatus qs : started) { - mplew.writeShort(qs.getQuest().getId()); - mplew.writeMapleAsciiString(qs.getProgressData()); + p.writeShort(qs.getQuest().getId()); + p.writeString(qs.getProgressData()); short infoNumber = qs.getInfoNumber(); if (infoNumber > 0) { MapleQuestStatus iqs = chr.getQuest(infoNumber); - mplew.writeShort(infoNumber); - mplew.writeMapleAsciiString(iqs.getProgressData()); + p.writeShort(infoNumber); + p.writeString(iqs.getProgressData()); } } List completed = chr.getCompletedQuests(); - mplew.writeShort(completed.size()); + p.writeShort(completed.size()); for (MapleQuestStatus qs : completed) { - mplew.writeShort(qs.getQuest().getId()); - mplew.writeLong(getTime(qs.getCompletionTime())); + p.writeShort(qs.getQuest().getId()); + p.writeLong(getTime(qs.getCompletionTime())); } } - private static void addExpirationTime(final MaplePacketLittleEndianWriter mplew, long time) { - mplew.writeLong(getTime(time)); // offset expiration time issue found thanks to Thora + private static void addExpirationTime(final OutPacket p, long time) { + p.writeLong(getTime(time)); // offset expiration time issue found thanks to Thora } - private static void addItemInfo(final MaplePacketLittleEndianWriter mplew, Item item) { - addItemInfo(mplew, item, false); + private static void addItemInfo(OutPacket p, Item item) { + addItemInfo(p, item, false); } - protected static void addItemInfo(final MaplePacketLittleEndianWriter mplew, Item item, boolean zeroPosition) { + protected static void addItemInfo(final OutPacket p, Item item, boolean zeroPosition) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); boolean isCash = ii.isCash(item.getItemId()); boolean isPet = item.getPetId() > -1; @@ -366,65 +362,65 @@ public class PacketCreator { if (pos < 0) { pos *= -1; } - mplew.writeShort(pos > 100 ? pos - 100 : pos); + p.writeShort(pos > 100 ? pos - 100 : pos); } else { - mplew.write(pos); + p.writeByte(pos); } } - mplew.write(itemType); - mplew.writeInt(item.getItemId()); - mplew.writeBool(isCash); + p.writeByte(itemType); + p.writeInt(item.getItemId()); + p.writeBool(isCash); if (isCash) { - mplew.writeLong(isPet ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()); + p.writeLong(isPet ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()); } - addExpirationTime(mplew, item.getExpiration()); + addExpirationTime(p, item.getExpiration()); if (isPet) { MaplePet pet = item.getPet(); - mplew.writeAsciiString(StringUtil.getRightPaddedStr(pet.getName(), '\0', 13)); - mplew.write(pet.getLevel()); - mplew.writeShort(pet.getCloseness()); - mplew.write(pet.getFullness()); - addExpirationTime(mplew, item.getExpiration()); - mplew.writeInt(pet.getPetFlag()); /* pet flags noticed by lrenex & Spoon */ + p.writeFixedString(StringUtil.getRightPaddedStr(pet.getName(), '\0', 13)); + p.writeByte(pet.getLevel()); + p.writeShort(pet.getCloseness()); + p.writeByte(pet.getFullness()); + addExpirationTime(p, item.getExpiration()); + p.writeInt(pet.getPetFlag()); /* pet flags noticed by lrenex & Spoon */ - mplew.write(new byte[]{(byte) 0x50, (byte) 0x46}); //wonder what this is - mplew.writeInt(0); + p.writeBytes(new byte[]{(byte) 0x50, (byte) 0x46}); //wonder what this is + p.writeInt(0); return; } if (equip == null) { - mplew.writeShort(item.getQuantity()); - mplew.writeMapleAsciiString(item.getOwner()); - mplew.writeShort(item.getFlag()); // flag + p.writeShort(item.getQuantity()); + p.writeString(item.getOwner()); + p.writeShort(item.getFlag()); // flag if (ItemConstants.isRechargeable(item.getItemId())) { - mplew.writeInt(2); - mplew.write(new byte[]{(byte) 0x54, 0, 0, (byte) 0x34}); + p.writeInt(2); + p.writeBytes(new byte[]{(byte) 0x54, 0, 0, (byte) 0x34}); } return; } - mplew.write(equip.getUpgradeSlots()); // upgrade slots - mplew.write(equip.getLevel()); // level - mplew.writeShort(equip.getStr()); // str - mplew.writeShort(equip.getDex()); // dex - mplew.writeShort(equip.getInt()); // int - mplew.writeShort(equip.getLuk()); // luk - mplew.writeShort(equip.getHp()); // hp - mplew.writeShort(equip.getMp()); // mp - mplew.writeShort(equip.getWatk()); // watk - mplew.writeShort(equip.getMatk()); // matk - mplew.writeShort(equip.getWdef()); // wdef - mplew.writeShort(equip.getMdef()); // mdef - mplew.writeShort(equip.getAcc()); // accuracy - mplew.writeShort(equip.getAvoid()); // avoid - mplew.writeShort(equip.getHands()); // hands - mplew.writeShort(equip.getSpeed()); // speed - mplew.writeShort(equip.getJump()); // jump - mplew.writeMapleAsciiString(equip.getOwner()); // owner name - mplew.writeShort(equip.getFlag()); //Item Flags + p.writeByte(equip.getUpgradeSlots()); // upgrade slots + p.writeByte(equip.getLevel()); // level + p.writeShort(equip.getStr()); // str + p.writeShort(equip.getDex()); // dex + p.writeShort(equip.getInt()); // int + p.writeShort(equip.getLuk()); // luk + p.writeShort(equip.getHp()); // hp + p.writeShort(equip.getMp()); // mp + p.writeShort(equip.getWatk()); // watk + p.writeShort(equip.getMatk()); // matk + p.writeShort(equip.getWdef()); // wdef + p.writeShort(equip.getMdef()); // mdef + p.writeShort(equip.getAcc()); // accuracy + p.writeShort(equip.getAvoid()); // avoid + p.writeShort(equip.getHands()); // hands + p.writeShort(equip.getSpeed()); // speed + p.writeShort(equip.getJump()); // jump + p.writeString(equip.getOwner()); // owner name + p.writeShort(equip.getFlag()); //Item Flags if (isCash) { for (int i = 0; i < 10; i++) { - mplew.write(0x40); + p.writeByte(0x40); } } else { int itemLevel = equip.getItemLevel(); @@ -432,22 +428,22 @@ public class PacketCreator { long expNibble = (ExpTable.getExpNeededForLevel(ii.getEquipLevelReq(item.getItemId())) * equip.getItemExp()); expNibble /= ExpTable.getEquipExpNeededForLevel(itemLevel); - mplew.write(0); - mplew.write(itemLevel); //Item Level - mplew.writeInt((int) expNibble); - mplew.writeInt(equip.getVicious()); //WTF NEXON ARE YOU SERIOUS? - mplew.writeLong(0); + p.writeByte(0); + p.writeByte(itemLevel); //Item Level + p.writeInt((int) expNibble); + p.writeInt(equip.getVicious()); //WTF NEXON ARE YOU SERIOUS? + p.writeLong(0); } - mplew.writeLong(getTime(-2)); - mplew.writeInt(-1); + p.writeLong(getTime(-2)); + p.writeInt(-1); } - private static void addInventoryInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addInventoryInfo(OutPacket p, MapleCharacter chr) { for (byte i = 1; i <= 5; i++) { - mplew.write(chr.getInventory(MapleInventoryType.getByType(i)).getSlotLimit()); + p.writeByte(chr.getInventory(MapleInventoryType.getByType(i)).getSlotLimit()); } - mplew.writeLong(getTime(-2)); + p.writeLong(getTime(-2)); MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED); Collection equippedC = iv.list(); List equipped = new ArrayList<>(equippedC.size()); @@ -460,36 +456,36 @@ public class PacketCreator { } } for (Item item : equipped) { // equipped doesn't actually need sorting, thanks Pllsz - addItemInfo(mplew, item); + addItemInfo(p, item); } - mplew.writeShort(0); // start of equip cash + p.writeShort(0); // start of equip cash for (Item item : equippedCash) { - addItemInfo(mplew, item); + addItemInfo(p, item); } - mplew.writeShort(0); // start of equip inventory + p.writeShort(0); // start of equip inventory for (Item item : chr.getInventory(MapleInventoryType.EQUIP).list()) { - addItemInfo(mplew, item); + addItemInfo(p, item); } - mplew.writeInt(0); + p.writeInt(0); for (Item item : chr.getInventory(MapleInventoryType.USE).list()) { - addItemInfo(mplew, item); + addItemInfo(p, item); } - mplew.write(0); + p.writeByte(0); for (Item item : chr.getInventory(MapleInventoryType.SETUP).list()) { - addItemInfo(mplew, item); + addItemInfo(p, item); } - mplew.write(0); + p.writeByte(0); for (Item item : chr.getInventory(MapleInventoryType.ETC).list()) { - addItemInfo(mplew, item); + addItemInfo(p, item); } - mplew.write(0); + p.writeByte(0); for (Item item : chr.getInventory(MapleInventoryType.CASH).list()) { - addItemInfo(mplew, item); + addItemInfo(p, item); } } - private static void addSkillInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.write(0); // start of skills + private static void addSkillInfo(OutPacket p, MapleCharacter chr) { + p.writeByte(0); // start of skills Map skills = chr.getSkills(); int skillsSize = skills.size(); // We don't want to include any hidden skill in this, so subtract them from the size list and ignore them. @@ -498,48 +494,47 @@ public class PacketCreator { skillsSize--; } } - mplew.writeShort(skillsSize); + p.writeShort(skillsSize); for (Entry skill : skills.entrySet()) { if (GameConstants.isHiddenSkills(skill.getKey().getId())) { continue; } - mplew.writeInt(skill.getKey().getId()); - mplew.writeInt(skill.getValue().skillevel); - addExpirationTime(mplew, skill.getValue().expiration); + p.writeInt(skill.getKey().getId()); + p.writeInt(skill.getValue().skillevel); + addExpirationTime(p, skill.getValue().expiration); if (skill.getKey().isFourthJob()) { - mplew.writeInt(skill.getValue().masterlevel); + p.writeInt(skill.getValue().masterlevel); } } - mplew.writeShort(chr.getAllCooldowns().size()); + p.writeShort(chr.getAllCooldowns().size()); for (PlayerCoolDownValueHolder cooling : chr.getAllCooldowns()) { - mplew.writeInt(cooling.skillId); + p.writeInt(cooling.skillId); int timeLeft = (int) (cooling.length + cooling.startTime - System.currentTimeMillis()); - mplew.writeShort(timeLeft / 1000); + p.writeShort(timeLeft / 1000); } } - private static void addMonsterBookInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.writeInt(chr.getMonsterBookCover()); // cover - mplew.write(0); + private static void addMonsterBookInfo(OutPacket p, MapleCharacter chr) { + p.writeInt(chr.getMonsterBookCover()); // cover + p.writeByte(0); Map cards = chr.getMonsterBook().getCards(); - mplew.writeShort(cards.size()); + p.writeShort(cards.size()); for (Entry all : cards.entrySet()) { - mplew.writeShort(all.getKey() % 10000); // Id - mplew.write(all.getValue()); // Level + p.writeShort(all.getKey() % 10000); // Id + p.writeByte(all.getValue()); // Level } } - public static byte[] sendGuestTOS() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUEST_ID_LOGIN.getValue()); - mplew.writeShort(0x100); - mplew.writeInt(Randomizer.nextInt(999999)); - mplew.writeLong(0); - mplew.writeLong(getTime(-2)); - mplew.writeLong(getTime(System.currentTimeMillis())); - mplew.writeInt(0); - mplew.writeMapleAsciiString("http://maplesolaxia.com"); - return mplew.getPacket(); + public static Packet sendGuestTOS() { + final OutPacket p = OutPacket.create(SendOpcode.GUEST_ID_LOGIN); + p.writeShort(0x100); + p.writeInt(Randomizer.nextInt(999999)); + p.writeLong(0); + p.writeLong(getTime(-2)); + p.writeLong(getTime(System.currentTimeMillis())); + p.writeInt(0); + p.writeString("http://maplesolaxia.com"); + return p; } /** @@ -550,16 +545,16 @@ public class PacketCreator { * @param recvIv the IV in use by the server for receiving * @return */ - public static byte[] getHello(short mapleVersion, InitializationVector sendIv, InitializationVector recvIv) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); - mplew.writeShort(0x0E); - mplew.writeShort(mapleVersion); - mplew.writeShort(1); - mplew.write(49); - mplew.write(recvIv.getBytes()); - mplew.write(sendIv.getBytes()); - mplew.write(8); - return mplew.getPacket(); + public static Packet getHello(short mapleVersion, InitializationVector sendIv, InitializationVector recvIv) { + OutPacket p = new ByteBufOutPacket(); + p.writeShort(0x0E); + p.writeShort(mapleVersion); + p.writeShort(1); + p.writeByte(49); + p.writeBytes(recvIv.getBytes()); + p.writeBytes(sendIv.getBytes()); + p.writeByte(8); + return p; } /** @@ -567,10 +562,8 @@ public class PacketCreator { * * @return The packet. */ - public static byte[] getPing() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); - mplew.writeShort(SendOpcode.PING.getValue()); - return mplew.getPacket(); + public static Packet getPing() { + return OutPacket.create(SendOpcode.PING); } /** @@ -591,13 +584,12 @@ public class PacketCreator { * @param reason The reason logging in failed. * @return The login failed packet. */ - public static byte[] getLoginFailed(int reason) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); - mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); - mplew.write(reason); - mplew.write(0); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet getLoginFailed(int reason) { + OutPacket p = OutPacket.create(SendOpcode.LOGIN_STATUS); + p.writeByte(reason); + p.writeByte(0); + p.writeInt(0); + return p; } /** @@ -620,49 +612,42 @@ public class PacketCreator { * @param reason The reason logging in failed. * @return The login failed packet. */ - public static byte[] getAfterLoginError(int reason) {//same as above o.o - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); - mplew.writeShort(SendOpcode.SELECT_CHARACTER_BY_VAC.getValue()); - mplew.writeShort(reason);//using other types than stated above = CRASH - return mplew.getPacket(); + public static Packet getAfterLoginError(int reason) {//same as above o.o + OutPacket p = OutPacket.create(SendOpcode.SELECT_CHARACTER_BY_VAC); + p.writeShort(reason);//using other types than stated above = CRASH + return p; } - public static byte[] sendPolice() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAKE_GM_NOTICE.getValue()); - mplew.write(0);//doesn't even matter what value - return mplew.getPacket(); + public static Packet sendPolice() { + final OutPacket p = OutPacket.create(SendOpcode.FAKE_GM_NOTICE); + p.writeByte(0);//doesn't even matter what value + return p; } - public static byte[] sendPolice(String text) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DATA_CRC_CHECK_FAILED.getValue()); - mplew.writeMapleAsciiString(text); - return mplew.getPacket(); + public static Packet sendPolice(String text) { + final OutPacket p = OutPacket.create(SendOpcode.DATA_CRC_CHECK_FAILED); + p.writeString(text); + return p; } - public static byte[] getPermBan(byte reason) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); - mplew.write(2); // Account is banned - mplew.write(0); - mplew.writeInt(0); - mplew.write(0); - mplew.writeLong(getTime(-1)); - - return mplew.getPacket(); + public static Packet getPermBan(byte reason) { + final OutPacket p = OutPacket.create(SendOpcode.LOGIN_STATUS); + p.writeByte(2); // Account is banned + p.writeByte(0); + p.writeInt(0); + p.writeByte(0); + p.writeLong(getTime(-1)); + return p; } - public static byte[] getTempBan(long timestampTill, byte reason) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(17); - mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); - mplew.write(2); - mplew.write(0); - mplew.writeInt(0); - mplew.write(reason); - mplew.writeLong(getTime(timestampTill)); // Tempban date is handled as a 64-bit long, number of 100NS intervals since 1/1/1601. Lulz. - - return mplew.getPacket(); + public static Packet getTempBan(long timestampTill, byte reason) { + OutPacket p = OutPacket.create(SendOpcode.LOGIN_STATUS); + p.writeByte(2); + p.writeByte(0); + p.writeInt(0); + p.writeByte(reason); + p.writeLong(getTime(timestampTill)); // Tempban date is handled as a 64-bit long, number of 100NS intervals since 1/1/1601. Lulz. + return p; } /** @@ -671,35 +656,34 @@ public class PacketCreator { * @param c * @return the successful authentication packet */ - public static byte[] getAuthSuccess(MapleClient c) { + public static Packet getAuthSuccess(MapleClient c) { Server.getInstance().loadAccountCharacters(c); // locks the login session until data is recovered from the cache or the DB. Server.getInstance().loadAccountStorages(c); - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); - mplew.writeInt(0); - mplew.writeShort(0); - mplew.writeInt(c.getAccID()); - mplew.write(c.getGender()); + final OutPacket p = OutPacket.create(SendOpcode.LOGIN_STATUS); + p.writeInt(0); + p.writeShort(0); + p.writeInt(c.getAccID()); + p.writeByte(c.getGender()); boolean canFly = Server.getInstance().canFly(c.getAccID()); - mplew.writeBool((YamlConfig.config.server.USE_ENFORCE_ADMIN_ACCOUNT || canFly) && c.getGMLevel() > 1); // thanks Steve(kaito1410) for pointing the GM account boolean here - mplew.write(((YamlConfig.config.server.USE_ENFORCE_ADMIN_ACCOUNT || canFly) && c.getGMLevel() > 1) ? 0x80 : 0); // Admin Byte. 0x80,0x40,0x20.. Rubbish. - mplew.write(0); // Country Code. + p.writeBool((YamlConfig.config.server.USE_ENFORCE_ADMIN_ACCOUNT || canFly) && c.getGMLevel() > 1); // thanks Steve(kaito1410) for pointing the GM account boolean here + p.writeByte(((YamlConfig.config.server.USE_ENFORCE_ADMIN_ACCOUNT || canFly) && c.getGMLevel() > 1) ? 0x80 : 0); // Admin Byte. 0x80,0x40,0x20.. Rubbish. + p.writeByte(0); // Country Code. - mplew.writeMapleAsciiString(c.getAccountName()); - mplew.write(0); + p.writeString(c.getAccountName()); + p.writeByte(0); - mplew.write(0); // IsQuietBan - mplew.writeLong(0);//IsQuietBanTimeStamp - mplew.writeLong(0); //CreationTimeStamp + p.writeByte(0); // IsQuietBan + p.writeLong(0);//IsQuietBanTimeStamp + p.writeLong(0); //CreationTimeStamp - mplew.writeInt(1); // 1: Remove the "Select the world you want to play in" + p.writeInt(1); // 1: Remove the "Select the world you want to play in" - mplew.write(YamlConfig.config.server.ENABLE_PIN && !c.canBypassPin() ? 0 : 1); // 0 = Pin-System Enabled, 1 = Disabled - mplew.write(YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); // 0 = Register PIC, 1 = Ask for PIC, 2 = Disabled + p.writeByte(YamlConfig.config.server.ENABLE_PIN && !c.canBypassPin() ? 0 : 1); // 0 = Pin-System Enabled, 1 = Disabled + p.writeByte(YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); // 0 = Register PIC, 1 = Ask for PIC, 2 = Disabled - return mplew.getPacket(); + return p; } /** @@ -712,41 +696,38 @@ public class PacketCreator { * @param mode The mode. * @return */ - private static byte[] pinOperation(byte mode) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.CHECK_PINCODE.getValue()); - mplew.write(mode); - return mplew.getPacket(); + private static Packet pinOperation(byte mode) { + OutPacket p = OutPacket.create(SendOpcode.CHECK_PINCODE); + p.writeByte(mode); + return p; } - public static byte[] pinRegistered() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.UPDATE_PINCODE.getValue()); - mplew.write(0); - return mplew.getPacket(); + public static Packet pinRegistered() { + OutPacket p = OutPacket.create(SendOpcode.UPDATE_PINCODE); + p.writeByte(0); + return p; } - public static byte[] requestPin() { + public static Packet requestPin() { return pinOperation((byte) 4); } - public static byte[] requestPinAfterFailure() { + public static Packet requestPinAfterFailure() { return pinOperation((byte) 2); } - public static byte[] registerPin() { + public static Packet registerPin() { return pinOperation((byte) 1); } - public static byte[] pinAccepted() { + public static Packet pinAccepted() { return pinOperation((byte) 0); } - public static byte[] wrongPic() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.CHECK_SPW_RESULT.getValue()); - mplew.write(0); - return mplew.getPacket(); + public static Packet wrongPic() { + OutPacket p = OutPacket.create(SendOpcode.CHECK_SPW_RESULT); + p.writeByte(0); + return p; } /** @@ -759,30 +740,29 @@ public class PacketCreator { * @param channelLoad Load of the channel - 1200 seems to be max. * @return The server info packet. */ - public static byte[] getServerList(int serverId, String serverName, int flag, String eventmsg, List channelLoad) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SERVERLIST.getValue()); - mplew.write(serverId); - mplew.writeMapleAsciiString(serverName); - mplew.write(flag); - mplew.writeMapleAsciiString(eventmsg); - mplew.write(100); // rate modifier, don't ask O.O! - mplew.write(0); // event xp * 2.6 O.O! - mplew.write(100); // rate modifier, don't ask O.O! - mplew.write(0); // drop rate * 2.6 - mplew.write(0); - mplew.write(channelLoad.size()); + public static Packet getServerList(int serverId, String serverName, int flag, String eventmsg, List channelLoad) { + final OutPacket p = OutPacket.create(SendOpcode.SERVERLIST); + p.writeByte(serverId); + p.writeString(serverName); + p.writeByte(flag); + p.writeString(eventmsg); + p.writeByte(100); // rate modifier, don't ask O.O! + p.writeByte(0); // event xp * 2.6 O.O! + p.writeByte(100); // rate modifier, don't ask O.O! + p.writeByte(0); // drop rate * 2.6 + p.writeByte(0); + p.writeByte(channelLoad.size()); for (Channel ch : channelLoad) { - mplew.writeMapleAsciiString(serverName + "-" + ch.getId()); - mplew.writeInt(ch.getChannelCapacity()); + p.writeString(serverName + "-" + ch.getId()); + p.writeInt(ch.getChannelCapacity()); // thanks GabrielSin for this channel packet structure part - mplew.write(1);// nWorldID - mplew.write(ch.getId() - 1);// nChannelID - mplew.writeBool(false);// bAdultChannel + p.writeByte(1);// nWorldID + p.writeByte(ch.getId() - 1);// nChannelID + p.writeBool(false);// bAdultChannel } - mplew.writeShort(0); - return mplew.getPacket(); + p.writeShort(0); + return p; } /** @@ -790,11 +770,10 @@ public class PacketCreator { * * @return The end of server list packet. */ - public static byte[] getEndOfServerList() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.SERVERLIST.getValue()); - mplew.write(0xFF); - return mplew.getPacket(); + public static Packet getEndOfServerList() { + OutPacket p = OutPacket.create(SendOpcode.SERVERLIST); + p.writeByte(0xFF); + return p; } /** @@ -806,11 +785,10 @@ public class PacketCreator { * @param status The server status. * @return The server status packet. */ - public static byte[] getServerStatus(int status) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.SERVERSTATUS.getValue()); - mplew.writeShort(status); - return mplew.getPacket(); + public static Packet getServerStatus(int status) { + OutPacket p = OutPacket.create(SendOpcode.SERVERSTATUS); + p.writeShort(status); + return p; } /** @@ -821,16 +799,15 @@ public class PacketCreator { * @param clientId The ID of the client. * @return The server IP packet. */ - public static byte[] getServerIP(InetAddress inetAddr, int port, int clientId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SERVER_IP.getValue()); - mplew.writeShort(0); + public static Packet getServerIP(InetAddress inetAddr, int port, int clientId) { + final OutPacket p = OutPacket.create(SendOpcode.SERVER_IP); + p.writeShort(0); byte[] addr = inetAddr.getAddress(); - mplew.write(addr); - mplew.writeShort(port); - mplew.writeInt(clientId); - mplew.write(new byte[]{0, 0, 0, 0, 0}); - return mplew.getPacket(); + p.writeBytes(addr); + p.writeShort(port); + p.writeInt(clientId); + p.writeBytes(new byte[]{0, 0, 0, 0, 0}); + return p; } /** @@ -840,14 +817,13 @@ public class PacketCreator { * @param port The port the channel is on. * @return The server IP packet. */ - public static byte[] getChannelChange(InetAddress inetAddr, int port) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CHANGE_CHANNEL.getValue()); - mplew.write(1); + public static Packet getChannelChange(InetAddress inetAddr, int port) { + final OutPacket p = OutPacket.create(SendOpcode.CHANGE_CHANNEL); + p.writeByte(1); byte[] addr = inetAddr.getAddress(); - mplew.write(addr); - mplew.writeShort(port); - return mplew.getPacket(); + p.writeBytes(addr); + p.writeShort(port); + return p; } /** @@ -873,27 +849,25 @@ public class PacketCreator { *
17: Wrong gateway or personal info
*
21: Verify account via email
*/ - public static byte[] getCharList(MapleClient c, int serverId, int status) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CHARLIST.getValue()); - mplew.write(status); + public static Packet getCharList(MapleClient c, int serverId, int status) { + final OutPacket p = OutPacket.create(SendOpcode.CHARLIST); + p.writeByte(status); List chars = c.loadCharacters(serverId); - mplew.write((byte) chars.size()); + p.writeByte((byte) chars.size()); for (MapleCharacter chr : chars) { - addCharEntry(mplew, chr, false); + addCharEntry(p, chr, false); } - mplew.write(YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); - mplew.writeInt(YamlConfig.config.server.COLLECTIVE_CHARSLOT ? chars.size() + c.getAvailableCharacterSlots() : c.getCharacterSlots()); - return mplew.getPacket(); + p.writeByte(YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); + p.writeInt(YamlConfig.config.server.COLLECTIVE_CHARSLOT ? chars.size() + c.getAvailableCharacterSlots() : c.getCharacterSlots()); + return p; } - public static byte[] enableTV() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.ENABLE_TV.getValue()); - mplew.writeInt(0); - mplew.write(0); - return mplew.getPacket(); + public static Packet enableTV() { + OutPacket p = OutPacket.create(SendOpcode.ENABLE_TV); + p.writeInt(0); + p.writeByte(0); + return p; } /** @@ -901,10 +875,8 @@ public class PacketCreator { * * @return The Remove TV Packet */ - public static byte[] removeTV() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); - mplew.writeShort(SendOpcode.REMOVE_TV.getValue()); - return mplew.getPacket(); + public static Packet removeTV() { + return OutPacket.create(SendOpcode.REMOVE_TV); } /** @@ -916,30 +888,29 @@ public class PacketCreator { * @param partner The partner shown with chr * @return the SEND_TV packet */ - public static byte[] sendTV(MapleCharacter chr, List messages, int type, MapleCharacter partner) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SEND_TV.getValue()); - mplew.write(partner != null ? 3 : 1); - mplew.write(type); //Heart = 2 Star = 1 Normal = 0 - addCharLook(mplew, chr, false); - mplew.writeMapleAsciiString(chr.getName()); + public static Packet sendTV(MapleCharacter chr, List messages, int type, MapleCharacter partner) { + final OutPacket p = OutPacket.create(SendOpcode.SEND_TV); + p.writeByte(partner != null ? 3 : 1); + p.writeByte(type); //Heart = 2 Star = 1 Normal = 0 + addCharLook(p, chr, false); + p.writeString(chr.getName()); if (partner != null) { - mplew.writeMapleAsciiString(partner.getName()); + p.writeString(partner.getName()); } else { - mplew.writeShort(0); + p.writeShort(0); } for (int i = 0; i < messages.size(); i++) { if (i == 4 && messages.get(4).length() > 15) { - mplew.writeMapleAsciiString(messages.get(4).substring(0, 15)); + p.writeString(messages.get(4).substring(0, 15)); } else { - mplew.writeMapleAsciiString(messages.get(i)); + p.writeString(messages.get(i)); } } - mplew.writeInt(1337); // time limit shit lol 'Your thing still start in blah blah seconds' + p.writeInt(1337); // time limit shit lol 'Your thing still start in blah blah seconds' if (partner != null) { - addCharLook(mplew, partner, false); + addCharLook(p, partner, false); } - return mplew.getPacket(); + return p; } /** @@ -948,19 +919,18 @@ public class PacketCreator { * @param chr The character to get info about. * @return The character info packet. */ - public static byte[] getCharInfo(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SET_FIELD.getValue()); - mplew.writeInt(chr.getClient().getChannel() - 1); - mplew.write(1); - mplew.write(1); - mplew.writeShort(0); + public static Packet getCharInfo(MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.SET_FIELD); + p.writeInt(chr.getClient().getChannel() - 1); + p.writeByte(1); + p.writeByte(1); + p.writeShort(0); for (int i = 0; i < 3; i++) { - mplew.writeInt(Randomizer.nextInt()); + p.writeInt(Randomizer.nextInt()); } - addCharacterInfo(mplew, chr); - mplew.writeLong(getTime(System.currentTimeMillis())); - return mplew.getPacket(); + addCharacterInfo(p, chr); + p.writeLong(getTime(System.currentTimeMillis())); + return p; } /** @@ -968,7 +938,7 @@ public class PacketCreator { * * @return The empty stat update packet. */ - public static byte[] enableActions() { + public static Packet enableActions() { return updatePlayerStats(EMPTY_STATUPDATE, true, null); } @@ -980,10 +950,9 @@ public class PacketCreator { * @param chr The update target. * @return The stat update packet. */ - public static byte[] updatePlayerStats(List> stats, boolean enableActions, MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STAT_CHANGED.getValue()); - mplew.write(enableActions ? 1 : 0); + public static Packet updatePlayerStats(List> stats, boolean enableActions, MapleCharacter chr) { + OutPacket p = OutPacket.create(SendOpcode.STAT_CHANGED); + p.writeBool(enableActions); int updateMask = 0; for (Pair statupdate : stats) { updateMask |= statupdate.getLeft().getValue(); @@ -996,31 +965,31 @@ public class PacketCreator { return (val1 < val2 ? -1 : (val1 == val2 ? 0 : 1)); }); } - mplew.writeInt(updateMask); + p.writeInt(updateMask); for (Pair statupdate : mystats) { if (statupdate.getLeft().getValue() >= 1) { if (statupdate.getLeft().getValue() == 0x1) { - mplew.write(statupdate.getRight().byteValue()); + p.writeByte(statupdate.getRight().byteValue()); } else if (statupdate.getLeft().getValue() <= 0x4) { - mplew.writeInt(statupdate.getRight()); + p.writeInt(statupdate.getRight()); } else if (statupdate.getLeft().getValue() < 0x20) { - mplew.write(statupdate.getRight().shortValue()); + p.writeByte(statupdate.getRight().shortValue()); } else if (statupdate.getLeft().getValue() == 0x8000) { if (GameConstants.hasSPTable(chr.getJob())) { - addRemainingSkillInfo(mplew, chr); + addRemainingSkillInfo(p, chr); } else { - mplew.writeShort(statupdate.getRight().shortValue()); + p.writeShort(statupdate.getRight().shortValue()); } } else if (statupdate.getLeft().getValue() < 0xFFFF) { - mplew.writeShort(statupdate.getRight().shortValue()); + p.writeShort(statupdate.getRight().shortValue()); } else if (statupdate.getLeft().getValue() == 0x20000) { - mplew.writeShort(statupdate.getRight().shortValue()); + p.writeShort(statupdate.getRight().shortValue()); } else { - mplew.writeInt(statupdate.getRight()); + p.writeInt(statupdate.getRight()); } } } - return mplew.getPacket(); + return p; } /** @@ -1031,39 +1000,37 @@ public class PacketCreator { * @param chr The character warping to to * @return The map change packet. */ - public static byte[] getWarpToMap(MapleMap to, int spawnPoint, MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SET_FIELD.getValue()); - mplew.writeInt(chr.getClient().getChannel() - 1); - mplew.writeInt(0);//updated - mplew.write(0);//updated - mplew.writeInt(to.getId()); - mplew.write(spawnPoint); - mplew.writeShort(chr.getHp()); - mplew.writeBool(chr.isChasing()); + public static Packet getWarpToMap(MapleMap to, int spawnPoint, MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.SET_FIELD); + p.writeInt(chr.getClient().getChannel() - 1); + p.writeInt(0);//updated + p.writeByte(0);//updated + p.writeInt(to.getId()); + p.writeByte(spawnPoint); + p.writeShort(chr.getHp()); + p.writeBool(chr.isChasing()); if (chr.isChasing()) { chr.setChasing(false); - mplew.writeInt(chr.getPosition().x); - mplew.writeInt(chr.getPosition().y); + p.writeInt(chr.getPosition().x); + p.writeInt(chr.getPosition().y); } - mplew.writeLong(getTime(Server.getInstance().getCurrentTime())); - return mplew.getPacket(); + p.writeLong(getTime(Server.getInstance().getCurrentTime())); + return p; } - public static byte[] getWarpToMap(MapleMap to, int spawnPoint, Point spawnPosition, MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SET_FIELD.getValue()); - mplew.writeInt(chr.getClient().getChannel() - 1); - mplew.writeInt(0);//updated - mplew.write(0);//updated - mplew.writeInt(to.getId()); - mplew.write(spawnPoint); - mplew.writeShort(chr.getHp()); - mplew.writeBool(true); - mplew.writeInt(spawnPosition.x); // spawn position placement thanks to Arnah (Vertisy) - mplew.writeInt(spawnPosition.y); - mplew.writeLong(getTime(Server.getInstance().getCurrentTime())); - return mplew.getPacket(); + public static Packet getWarpToMap(MapleMap to, int spawnPoint, Point spawnPosition, MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.SET_FIELD); + p.writeInt(chr.getClient().getChannel() - 1); + p.writeInt(0);//updated + p.writeByte(0);//updated + p.writeInt(to.getId()); + p.writeByte(spawnPoint); + p.writeShort(chr.getHp()); + p.writeBool(true); + p.writeInt(spawnPosition.x); // spawn position placement thanks to Arnah (Vertisy) + p.writeInt(spawnPosition.y); + p.writeLong(getTime(Server.getInstance().getCurrentTime())); + return p; } /** @@ -1074,13 +1041,12 @@ public class PacketCreator { * @param pos Where to put the portal. * @return The portal spawn packet. */ - public static byte[] spawnPortal(int townId, int targetId, Point pos) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(14); - mplew.writeShort(SendOpcode.SPAWN_PORTAL.getValue()); - mplew.writeInt(townId); - mplew.writeInt(targetId); - mplew.writePos(pos); - return mplew.getPacket(); + public static Packet spawnPortal(int townId, int targetId, Point pos) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_PORTAL); + p.writeInt(townId); + p.writeInt(targetId); + p.writePos(pos); + return p; } /** @@ -1091,34 +1057,33 @@ public class PacketCreator { * @param launched Already deployed the door. * @return The remove door packet. */ - public static byte[] spawnDoor(int ownerid, Point pos, boolean launched) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); - mplew.writeShort(SendOpcode.SPAWN_DOOR.getValue()); - mplew.writeBool(launched); - mplew.writeInt(ownerid); - mplew.writePos(pos); - return mplew.getPacket(); + public static Packet spawnDoor(int ownerid, Point pos, boolean launched) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_DOOR); + p.writeBool(launched); + p.writeInt(ownerid); + p.writePos(pos); + return p; } /** * Gets a packet to remove a door. * - * @param ownerid The door's owner ID. + * @param ownerId The door's owner ID. * @param town * @return The remove door packet. */ - public static byte[] removeDoor(int ownerid, boolean town) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(10); + public static Packet removeDoor(int ownerId, boolean town) { + final OutPacket p; if (town) { - mplew.writeShort(SendOpcode.SPAWN_PORTAL.getValue()); - mplew.writeInt(999999999); - mplew.writeInt(999999999); + p = OutPacket.create(SendOpcode.SPAWN_PORTAL); + p.writeInt(999999999); + p.writeInt(999999999); } else { - mplew.writeShort(SendOpcode.REMOVE_DOOR.getValue()); - mplew.write(0); - mplew.writeInt(ownerid); + p = OutPacket.create(SendOpcode.REMOVE_DOOR); + p.writeByte(0); + p.writeInt(ownerId); } - return mplew.getPacket(); + return p; } /** @@ -1129,21 +1094,20 @@ public class PacketCreator { * @param animated Animated spawn? * @return The spawn packet for the map object. */ - public static byte[] spawnSummon(MapleSummon summon, boolean animated) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(25); - mplew.writeShort(SendOpcode.SPAWN_SPECIAL_MAPOBJECT.getValue()); - mplew.writeInt(summon.getOwner().getId()); - mplew.writeInt(summon.getObjectId()); - mplew.writeInt(summon.getSkill()); - mplew.write(0x0A); //v83 - mplew.write(summon.getSkillLevel()); - mplew.writePos(summon.getPosition()); - mplew.write(summon.getStance()); //bMoveAction & foothold, found thanks to Rien dev team - mplew.writeShort(0); - mplew.write(summon.getMovementType().getValue()); // 0 = don't move, 1 = follow (4th mage summons?), 2/4 = only tele follow, 3 = bird follow - mplew.write(summon.isPuppet() ? 0 : 1); // 0 and the summon can't attack - but puppets don't attack with 1 either ^.- - mplew.write(animated ? 0 : 1); - return mplew.getPacket(); + public static Packet spawnSummon(MapleSummon summon, boolean animated) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_SPECIAL_MAPOBJECT); + p.writeInt(summon.getOwner().getId()); + p.writeInt(summon.getObjectId()); + p.writeInt(summon.getSkill()); + p.writeByte(0x0A); //v83 + p.writeByte(summon.getSkillLevel()); + p.writePos(summon.getPosition()); + p.writeByte(summon.getStance()); //bMoveAction & foothold, found thanks to Rien dev team + p.writeShort(0); + p.writeByte(summon.getMovementType().getValue()); // 0 = don't move, 1 = follow (4th mage summons?), 2/4 = only tele follow, 3 = bird follow + p.writeBool(!summon.isPuppet()); // 0 and the summon can't attack - but puppets don't attack with 1 either ^.- + p.writeBool(!animated); + return p; } /** @@ -1153,39 +1117,34 @@ public class PacketCreator { * @param animated Animated removal? * @return The packet removing the object. */ - public static byte[] removeSummon(MapleSummon summon, boolean animated) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); - mplew.writeShort(SendOpcode.REMOVE_SPECIAL_MAPOBJECT.getValue()); - mplew.writeInt(summon.getOwner().getId()); - mplew.writeInt(summon.getObjectId()); - mplew.write(animated ? 4 : 1); // ? - return mplew.getPacket(); + public static Packet removeSummon(MapleSummon summon, boolean animated) { + OutPacket p = OutPacket.create(SendOpcode.REMOVE_SPECIAL_MAPOBJECT); + p.writeInt(summon.getOwner().getId()); + p.writeInt(summon.getObjectId()); + p.writeByte(animated ? 4 : 1); // ? + return p; } - public static byte[] spawnKite(int oid, int itemid, String name, String msg, Point pos, int ft) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_KITE.getValue()); - mplew.writeInt(oid); - mplew.writeInt(itemid); - mplew.writeMapleAsciiString(msg); - mplew.writeMapleAsciiString(name); - mplew.writeShort(pos.x); - mplew.writeShort(ft); - return mplew.getPacket(); + public static Packet spawnKite(int objId, int itemId, String name, String msg, Point pos, int ft) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_KITE); + p.writeInt(objId); + p.writeInt(itemId); + p.writeString(msg); + p.writeString(name); + p.writeShort(pos.x); + p.writeShort(ft); + return p; } - public static byte[] removeKite(int objectid, int animationType) { // thanks to Arnah (Vertisy) - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.REMOVE_KITE.getValue()); - mplew.write(animationType); // 0 is 10/10, 1 just vanishes - mplew.writeInt(objectid); - return mplew.getPacket(); + public static Packet removeKite(int objId, int animationType) { // thanks to Arnah (Vertisy) + OutPacket p = OutPacket.create(SendOpcode.REMOVE_KITE); + p.writeByte(animationType); // 0 is 10/10, 1 just vanishes + p.writeInt(objId); + return p; } - public static byte[] sendCannotSpawnKite() { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANNOT_SPAWN_KITE.getValue()); - return mplew.getPacket(); + public static Packet sendCannotSpawnKite() { + return OutPacket.create(SendOpcode.CANNOT_SPAWN_KITE); } /** @@ -1193,11 +1152,10 @@ public class PacketCreator { * * @return The relog response packet. */ - public static byte[] getRelogResponse() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.RELOG_RESPONSE.getValue()); - mplew.write(1);//1 O.O Must be more types ): - return mplew.getPacket(); + public static Packet getRelogResponse() { + OutPacket p = OutPacket.create(SendOpcode.RELOG_RESPONSE); + p.writeByte(1);//1 O.O Must be more types ): + return p; } /** @@ -1206,7 +1164,7 @@ public class PacketCreator { * @param message The message to convey. * @return The server message packet. */ - public static byte[] serverMessage(String message) { + public static Packet serverMessage(String message) { return serverMessage(4, (byte) 0, message, true, false, 0); } @@ -1221,7 +1179,7 @@ public class PacketCreator { * @param message The message to convey. * @return The server notice packet. */ - public static byte[] serverNotice(int type, String message) { + public static Packet serverNotice(int type, String message) { return serverMessage(type, (byte) 0, message, false, false, 0); } @@ -1237,15 +1195,15 @@ public class PacketCreator { * @param message The message to convey. * @return The server notice packet. */ - public static byte[] serverNotice(int type, String message, int npc) { + public static Packet serverNotice(int type, String message, int npc) { return serverMessage(type, 0, message, false, false, npc); } - public static byte[] serverNotice(int type, int channel, String message) { + public static Packet serverNotice(int type, int channel, String message) { return serverMessage(type, channel, message, false, false, 0); } - public static byte[] serverNotice(int type, int channel, String message, boolean smegaEar) { + public static Packet serverNotice(int type, int channel, String message, boolean smegaEar) { return serverMessage(type, channel, message, false, smegaEar, 0); } @@ -1262,23 +1220,22 @@ public class PacketCreator { * @param servermessage Is this a scrolling ticker? * @return The server notice packet. */ - private static byte[] serverMessage(int type, int channel, String message, boolean servermessage, boolean megaEar, int npc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); - mplew.write(type); + private static Packet serverMessage(int type, int channel, String message, boolean servermessage, boolean megaEar, int npc) { + OutPacket p = OutPacket.create(SendOpcode.SERVERMESSAGE); + p.writeByte(type); if (servermessage) { - mplew.write(1); + p.writeByte(1); } - mplew.writeMapleAsciiString(message); + p.writeString(message); if (type == 3) { - mplew.write(channel - 1); // channel - mplew.writeBool(megaEar); + p.writeByte(channel - 1); // channel + p.writeBool(megaEar); } else if (type == 6) { - mplew.writeInt(0); + p.writeInt(0); } else if (type == 7) { // npc - mplew.writeInt(npc); + p.writeInt(npc); } - return mplew.getPacket(); + return p; } /** @@ -1292,29 +1249,27 @@ public class PacketCreator { * @param ear Whether or not the ear is shown for whisper. * @return */ - public static byte[] getAvatarMega(MapleCharacter chr, String medal, int channel, int itemId, List message, boolean ear) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SET_AVATAR_MEGAPHONE.getValue()); - mplew.writeInt(itemId); - mplew.writeMapleAsciiString(medal + chr.getName()); + public static Packet getAvatarMega(MapleCharacter chr, String medal, int channel, int itemId, List message, boolean ear) { + final OutPacket p = OutPacket.create(SendOpcode.SET_AVATAR_MEGAPHONE); + p.writeInt(itemId); + p.writeString(medal + chr.getName()); for (String s : message) { - mplew.writeMapleAsciiString(s); + p.writeString(s); } - mplew.writeInt(channel - 1); // channel - mplew.writeBool(ear); - addCharLook(mplew, chr, true); - return mplew.getPacket(); + p.writeInt(channel - 1); // channel + p.writeBool(ear); + addCharLook(p, chr, true); + return p; } /* * Sends a packet to remove the tiger megaphone * @return */ - public static byte[] byeAvatarMega() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CLEAR_AVATAR_MEGAPHONE.getValue()); - mplew.write(1); - return mplew.getPacket(); + public static Packet byeAvatarMega() { + final OutPacket p = OutPacket.create(SendOpcode.CLEAR_AVATAR_MEGAPHONE); + p.writeByte(1); + return p; } /** @@ -1325,54 +1280,43 @@ public class PacketCreator { * @param player * @return */ - public static byte[] gachaponMessage(Item item, String town, MapleCharacter player) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); - mplew.write(0x0B); - mplew.writeMapleAsciiString(player.getName() + " : got a(n)"); - mplew.writeInt(0); //random? - mplew.writeMapleAsciiString(town); - addItemInfo(mplew, item, true); - return mplew.getPacket(); + public static Packet gachaponMessage(Item item, String town, MapleCharacter player) { + final OutPacket p = OutPacket.create(SendOpcode.SERVERMESSAGE); + p.writeByte(0x0B); + p.writeString(player.getName() + " : got a(n)"); + p.writeInt(0); //random? + p.writeString(town); + addItemInfo(p, item, true); + return p; } - public static byte[] spawnNPC(MapleNPC life) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(24); - mplew.writeShort(SendOpcode.SPAWN_NPC.getValue()); - mplew.writeInt(life.getObjectId()); - mplew.writeInt(life.getId()); - mplew.writeShort(life.getPosition().x); - mplew.writeShort(life.getCy()); - if (life.getF() == 1) { - mplew.write(0); - } else { - mplew.write(1); - } - mplew.writeShort(life.getFh()); - mplew.writeShort(life.getRx0()); - mplew.writeShort(life.getRx1()); - mplew.write(1); - return mplew.getPacket(); + public static Packet spawnNPC(MapleNPC life) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_NPC); + p.writeInt(life.getObjectId()); + p.writeInt(life.getId()); + p.writeShort(life.getPosition().x); + p.writeShort(life.getCy()); + p.writeBool(life.getF() != 1); + p.writeShort(life.getFh()); + p.writeShort(life.getRx0()); + p.writeShort(life.getRx1()); + p.writeByte(1); + return p; } - public static byte[] spawnNPCRequestController(MapleNPC life, boolean MiniMap) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(23); - mplew.writeShort(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER.getValue()); - mplew.write(1); - mplew.writeInt(life.getObjectId()); - mplew.writeInt(life.getId()); - mplew.writeShort(life.getPosition().x); - mplew.writeShort(life.getCy()); - if (life.getF() == 1) { - mplew.write(0); - } else { - mplew.write(1); - } - mplew.writeShort(life.getFh()); - mplew.writeShort(life.getRx0()); - mplew.writeShort(life.getRx1()); - mplew.writeBool(MiniMap); - return mplew.getPacket(); + public static Packet spawnNPCRequestController(MapleNPC life, boolean miniMap) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER); + p.writeByte(1); + p.writeInt(life.getObjectId()); + p.writeInt(life.getId()); + p.writeShort(life.getPosition().x); + p.writeShort(life.getCy()); + p.writeBool(life.getF() != 1); + p.writeShort(life.getFh()); + p.writeShort(life.getRx0()); + p.writeShort(life.getRx1()); + p.writeBool(miniMap); + return p; } /** @@ -1382,7 +1326,7 @@ public class PacketCreator { * @param newSpawn Is it a new spawn? * @return The spawn monster packet. */ - public static byte[] spawnMonster(MapleMonster life, boolean newSpawn) { + public static Packet spawnMonster(MapleMonster life, boolean newSpawn) { return spawnMonsterInternal(life, false, newSpawn, false, 0, false); } @@ -1394,7 +1338,7 @@ public class PacketCreator { * @param effect The spawn effect. * @return The spawn monster packet. */ - public static byte[] spawnMonster(MapleMonster life, boolean newSpawn, int effect) { + public static Packet spawnMonster(MapleMonster life, boolean newSpawn, int effect) { return spawnMonsterInternal(life, false, newSpawn, false, effect, false); } @@ -1406,7 +1350,7 @@ public class PacketCreator { * @param aggro Aggressive monster? * @return The monster control packet. */ - public static byte[] controlMonster(MapleMonster life, boolean newSpawn, boolean aggro) { + public static Packet controlMonster(MapleMonster life, boolean newSpawn, boolean aggro) { return spawnMonsterInternal(life, true, newSpawn, aggro, 0, false); } @@ -1416,12 +1360,11 @@ public class PacketCreator { * @param life * @return */ - public static byte[] removeMonsterInvisibility(MapleMonster life) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); - mplew.write(1); - mplew.writeInt(life.getObjectId()); - return mplew.getPacket(); + public static Packet removeMonsterInvisibility(MapleMonster life) { + final OutPacket p = OutPacket.create(SendOpcode.SPAWN_MONSTER_CONTROL); + p.writeByte(1); + p.writeInt(life.getObjectId()); + return p; } /** @@ -1430,68 +1373,64 @@ public class PacketCreator { * @param life * @return */ - public static byte[] makeMonsterInvisible(MapleMonster life) { + public static Packet makeMonsterInvisible(MapleMonster life) { return spawnMonsterInternal(life, true, false, false, 0, true); } - private static void encodeParentlessMobSpawnEffect(MaplePacketLittleEndianWriter mplew, boolean newSpawn, int effect) { + private static void encodeParentlessMobSpawnEffect(OutPacket p, boolean newSpawn, int effect) { if (effect > 0) { - mplew.write(effect); - mplew.write(0); - mplew.writeShort(0); + p.writeByte(effect); + p.writeByte(0); + p.writeShort(0); if (effect == 15) { - mplew.write(0); + p.writeByte(0); } } - mplew.write(newSpawn ? -2 : -1); + p.writeByte(newSpawn ? -2 : -1); } - private static void encodeTemporary(MaplePacketLittleEndianWriter mplew, Map stati) { - int pCounter = -1, mCounter = -1; + private static void encodeTemporary(OutPacket p, Map stati) { + int pCounter = -1; + int mCounter = -1; stati = stati.entrySet() // to patch some status crashing players .stream() .filter(e -> !(e.getKey().equals(MonsterStatus.WATK) || e.getKey().equals(MonsterStatus.WDEF))) .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); - writeLongEncodeTemporaryMask(mplew, stati.keySet()); // packet structure mapped thanks to Eric + writeLongEncodeTemporaryMask(p, stati.keySet()); // packet structure mapped thanks to Eric for (Entry s : stati.entrySet()) { MonsterStatusEffect mse = s.getValue(); - mplew.writeShort(mse.getStati().get(s.getKey())); + p.writeShort(mse.getStati().get(s.getKey())); MobSkill mobSkill = mse.getMobSkill(); if (mobSkill != null) { - mplew.writeShort(mobSkill.getSkillId()); - mplew.writeShort(mobSkill.getSkillLevel()); + p.writeShort(mobSkill.getSkillId()); + p.writeShort(mobSkill.getSkillLevel()); switch (s.getKey()) { - case WEAPON_REFLECT: - pCounter = mobSkill.getX(); - break; - - case MAGIC_REFLECT: - mCounter = mobSkill.getY(); - break; + case WEAPON_REFLECT -> pCounter = mobSkill.getX(); + case MAGIC_REFLECT -> mCounter = mobSkill.getY(); } } else { Skill skill = mse.getSkill(); - mplew.writeInt(skill != null ? skill.getId() : 0); + p.writeInt(skill != null ? skill.getId() : 0); } - mplew.writeShort(-1); // duration + p.writeShort(-1); // duration } // reflect packet structure found thanks to Arnah (Vertisy) - if (pCounter != -1) { - mplew.writeInt(pCounter);// wPCounter_ - } - if (mCounter != -1) { - mplew.writeInt(mCounter);// wMCounter_ - } - if (pCounter != -1 || mCounter != -1) { - mplew.writeInt(100);// nCounterProb_ - } + if (pCounter != -1) { + p.writeInt(pCounter);// wPCounter_ + } + if (mCounter != -1) { + p.writeInt(mCounter);// wMCounter_ + } + if (pCounter != -1 || mCounter != -1) { + p.writeInt(100);// nCounterProb_ + } } /** @@ -1504,34 +1443,36 @@ public class PacketCreator { * @param effect The spawn effect to use. * @return The spawn/control packet. */ - private static byte[] spawnMonsterInternal(MapleMonster life, boolean requestController, boolean newSpawn, boolean aggro, int effect, boolean makeInvis) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + private static Packet spawnMonsterInternal(MapleMonster life, boolean requestController, boolean newSpawn, boolean aggro, int effect, boolean makeInvis) { if (makeInvis) { - mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); - mplew.write(0); - mplew.writeInt(life.getObjectId()); - return mplew.getPacket(); - } - if (requestController) { - mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); - mplew.write(aggro ? 2 : 1); - } else { - mplew.writeShort(SendOpcode.SPAWN_MONSTER.getValue()); - } - mplew.writeInt(life.getObjectId()); - mplew.write(life.getController() == null ? 5 : 1); - mplew.writeInt(life.getId()); - - if (requestController) { - encodeTemporary(mplew, life.getStati()); // thanks shot for noticing encode temporary buffs missing - } else { - mplew.skip(16); + OutPacket p = OutPacket.create(SendOpcode.SPAWN_MONSTER_CONTROL); + p.writeByte(0); + p.writeInt(life.getObjectId()); + return p; } - mplew.writePos(life.getPosition()); - mplew.write(life.getStance()); - mplew.writeShort(0); //Origin FH //life.getStartFh() - mplew.writeShort(life.getFh()); + final OutPacket p; + if (requestController) { + p = OutPacket.create(SendOpcode.SPAWN_MONSTER_CONTROL); + p.writeByte(aggro ? 2 : 1); + } else { + p = OutPacket.create(SendOpcode.SPAWN_MONSTER); + } + + p.writeInt(life.getObjectId()); + p.writeByte(life.getController() == null ? 5 : 1); + p.writeInt(life.getId()); + + if (requestController) { + encodeTemporary(p, life.getStati()); // thanks shot for noticing encode temporary buffs missing + } else { + p.skip(16); + } + + p.writePos(life.getPosition()); + p.writeByte(life.getStance()); + p.writeShort(0); //Origin FH //life.getStartFh() + p.writeShort(life.getFh()); /** @@ -1545,18 +1486,18 @@ public class PacketCreator { if (life.getParentMobOid() != 0) { MapleMonster parentMob = life.getMap().getMonsterByOid(life.getParentMobOid()); if (parentMob != null && parentMob.isAlive()) { - mplew.write(effect != 0 ? effect : -3); - mplew.writeInt(life.getParentMobOid()); + p.writeByte(effect != 0 ? effect : -3); + p.writeInt(life.getParentMobOid()); } else { - encodeParentlessMobSpawnEffect(mplew, newSpawn, effect); + encodeParentlessMobSpawnEffect(p, newSpawn, effect); } } else { - encodeParentlessMobSpawnEffect(mplew, newSpawn, effect); + encodeParentlessMobSpawnEffect(p, newSpawn, effect); } - mplew.write(life.getTeam()); - mplew.writeInt(0); // getItemEffect - return mplew.getPacket(); + p.writeByte(life.getTeam()); + p.writeInt(0); // getItemEffect + return p; } /** @@ -1566,27 +1507,26 @@ public class PacketCreator { * @param effect The effect to show when spawning. * @return The packet to spawn the mob as non-targettable. */ - public static byte[] spawnFakeMonster(MapleMonster life, int effect) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); - mplew.write(1); - mplew.writeInt(life.getObjectId()); - mplew.write(5); - mplew.writeInt(life.getId()); - encodeTemporary(mplew, life.getStati()); - mplew.writePos(life.getPosition()); - mplew.write(life.getStance()); - mplew.writeShort(0);//life.getStartFh() - mplew.writeShort(life.getFh()); + public static Packet spawnFakeMonster(MapleMonster life, int effect) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_MONSTER_CONTROL); + p.writeByte(1); + p.writeInt(life.getObjectId()); + p.writeByte(5); + p.writeInt(life.getId()); + encodeTemporary(p, life.getStati()); + p.writePos(life.getPosition()); + p.writeByte(life.getStance()); + p.writeShort(0);//life.getStartFh() + p.writeShort(life.getFh()); if (effect > 0) { - mplew.write(effect); - mplew.write(0); - mplew.writeShort(0); + p.writeByte(effect); + p.writeByte(0); + p.writeShort(0); } - mplew.writeShort(-2); - mplew.write(life.getTeam()); - mplew.writeInt(0); - return mplew.getPacket(); + p.writeShort(-2); + p.writeByte(life.getTeam()); + p.writeInt(0); + return p; } /** @@ -1595,20 +1535,19 @@ public class PacketCreator { * @param life The mob to make targettable. * @return The packet to make the mob targettable. */ - public static byte[] makeMonsterReal(MapleMonster life) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_MONSTER.getValue()); - mplew.writeInt(life.getObjectId()); - mplew.write(5); - mplew.writeInt(life.getId()); - encodeTemporary(mplew, life.getStati()); - mplew.writePos(life.getPosition()); - mplew.write(life.getStance()); - mplew.writeShort(0);//life.getStartFh() - mplew.writeShort(life.getFh()); - mplew.writeShort(-1); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet makeMonsterReal(MapleMonster life) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_MONSTER); + p.writeInt(life.getObjectId()); + p.writeByte(5); + p.writeInt(life.getId()); + encodeTemporary(p, life.getStati()); + p.writePos(life.getPosition()); + p.writeByte(life.getStance()); + p.writeShort(0);//life.getStartFh() + p.writeShort(life.getFh()); + p.writeShort(-1); + p.writeInt(0); + return p; } /** @@ -1617,12 +1556,11 @@ public class PacketCreator { * @param oid The ObjectID of the monster to stop controlling. * @return The stop control monster packet. */ - public static byte[] stopControllingMonster(int oid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); - mplew.write(0); - mplew.writeInt(oid); - return mplew.getPacket(); + public static Packet stopControllingMonster(int oid) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_MONSTER_CONTROL); + p.writeByte(0); + p.writeInt(oid); + return p; } /** @@ -1634,7 +1572,7 @@ public class PacketCreator { * @param useSkills Can the monster use skills? * @return The move response packet. */ - public static byte[] moveMonsterResponse(int objectid, short moveid, int currentMp, boolean useSkills) { + public static Packet moveMonsterResponse(int objectid, short moveid, int currentMp, boolean useSkills) { return moveMonsterResponse(objectid, moveid, currentMp, useSkills, 0, 0); } @@ -1650,16 +1588,15 @@ public class PacketCreator { * @return The move response packet. */ - public static byte[] moveMonsterResponse(int objectid, short moveid, int currentMp, boolean useSkills, int skillId, int skillLevel) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(13); - mplew.writeShort(SendOpcode.MOVE_MONSTER_RESPONSE.getValue()); - mplew.writeInt(objectid); - mplew.writeShort(moveid); - mplew.writeBool(useSkills); - mplew.writeShort(currentMp); - mplew.write(skillId); - mplew.write(skillLevel); - return mplew.getPacket(); + public static Packet moveMonsterResponse(int objectid, short moveid, int currentMp, boolean useSkills, int skillId, int skillLevel) { + OutPacket p = OutPacket.create(SendOpcode.MOVE_MONSTER_RESPONSE); + p.writeInt(objectid); + p.writeShort(moveid); + p.writeBool(useSkills); + p.writeShort(currentMp); + p.writeByte(skillId); + p.writeByte(skillLevel); + return p; } /** @@ -1671,14 +1608,13 @@ public class PacketCreator { * @param show * @return The general chat packet. */ - public static byte[] getChatText(int cidfrom, String text, boolean gm, int show) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CHATTEXT.getValue()); - mplew.writeInt(cidfrom); - mplew.writeBool(gm); - mplew.writeMapleAsciiString(text); - mplew.write(show); - return mplew.getPacket(); + public static Packet getChatText(int cidfrom, String text, boolean gm, int show) { + final OutPacket p = OutPacket.create(SendOpcode.CHATTEXT); + p.writeInt(cidfrom); + p.writeBool(gm); + p.writeString(text); + p.writeByte(show); + return p; } /** @@ -1689,27 +1625,26 @@ public class PacketCreator { * @param white White text or yellow? * @return The exp gained packet. */ - public static byte[] getShowExpGain(int gain, int equip, int party, boolean inChat, boolean white) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(3); // 3 = exp, 4 = fame, 5 = mesos, 6 = guildpoints - mplew.writeBool(white); - mplew.writeInt(gain); - mplew.writeBool(inChat); - mplew.writeInt(0); // bonus event exp - mplew.write(0); // third monster kill event - mplew.write(0); // RIP byte, this is always a 0 - mplew.writeInt(0); //wedding bonus + public static Packet getShowExpGain(int gain, int equip, int party, boolean inChat, boolean white) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(3); // 3 = exp, 4 = fame, 5 = mesos, 6 = guildpoints + p.writeBool(white); + p.writeInt(gain); + p.writeBool(inChat); + p.writeInt(0); // bonus event exp + p.writeByte(0); // third monster kill event + p.writeByte(0); // RIP byte, this is always a 0 + p.writeInt(0); //wedding bonus if (inChat) { // quest bonus rate stuff - mplew.write(0); + p.writeByte(0); } - mplew.write(0); //0 = party bonus, 100 = 1x Bonus EXP, 200 = 2x Bonus EXP - mplew.writeInt(party); // party bonus - mplew.writeInt(equip); //equip bonus - mplew.writeInt(0); //Internet Cafe Bonus - mplew.writeInt(0); //Rainbow Week Bonus - return mplew.getPacket(); + p.writeByte(0); //0 = party bonus, 100 = 1x Bonus EXP, 200 = 2x Bonus EXP + p.writeInt(party); // party bonus + p.writeInt(equip); //equip bonus + p.writeInt(0); //Internet Cafe Bonus + p.writeInt(0); //Rainbow Week Bonus + return p; } /** @@ -1718,12 +1653,11 @@ public class PacketCreator { * @param gain How many fame gained. * @return The meso gain packet. */ - public static byte[] getShowFameGain(int gain) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(4); - mplew.writeInt(gain); - return mplew.getPacket(); + public static Packet getShowFameGain(int gain) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(4); + p.writeInt(gain); + return p; } /** @@ -1732,7 +1666,7 @@ public class PacketCreator { * @param gain How many mesos gained. * @return The meso gain packet. */ - public static byte[] getShowMesoGain(int gain) { + public static Packet getShowMesoGain(int gain) { return getShowMesoGain(gain, false); } @@ -1743,18 +1677,17 @@ public class PacketCreator { * @param inChat Show in the chat window? * @return The meso gain packet. */ - public static byte[] getShowMesoGain(int gain, boolean inChat) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + public static Packet getShowMesoGain(int gain, boolean inChat) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); if (!inChat) { - mplew.write(0); - mplew.writeShort(1); //v83 + p.writeByte(0); + p.writeShort(1); //v83 } else { - mplew.write(5); + p.writeByte(5); } - mplew.writeInt(gain); - mplew.writeShort(0); - return mplew.getPacket(); + p.writeInt(gain); + p.writeShort(0); + return p; } /** @@ -1764,7 +1697,7 @@ public class PacketCreator { * @param quantity How many items gained. * @return The item gain packet. */ - public static byte[] getShowItemGain(int itemId, short quantity) { + public static Packet getShowItemGain(int itemId, short quantity) { return getShowItemGain(itemId, quantity, false); } @@ -1776,125 +1709,98 @@ public class PacketCreator { * @param inChat Show in the chat window? * @return The item gain packet. */ - public static byte[] getShowItemGain(int itemId, short quantity, boolean inChat) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + public static Packet getShowItemGain(int itemId, short quantity, boolean inChat) { + final OutPacket p; if (inChat) { - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(3); - mplew.write(1); - mplew.writeInt(itemId); - mplew.writeInt(quantity); + p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(3); + p.writeByte(1); + p.writeInt(itemId); + p.writeInt(quantity); } else { - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.writeShort(0); - mplew.writeInt(itemId); - mplew.writeInt(quantity); - mplew.writeInt(0); - mplew.writeInt(0); + p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeShort(0); + p.writeInt(itemId); + p.writeInt(quantity); + p.writeInt(0); + p.writeInt(0); } - return mplew.getPacket(); + return p; } - public static byte[] killMonster(int oid, boolean animation) { - return killMonster(oid, animation ? 1 : 0); + public static Packet killMonster(int objId, boolean animation) { + return killMonster(objId, animation ? 1 : 0); } /** * Gets a packet telling the client that a monster was killed. * - * @param oid The objectID of the killed monster. + * @param objId The objectID of the killed monster. * @param animation 0 = dissapear, 1 = fade out, 2+ = special * @return The kill monster packet. */ - public static byte[] killMonster(int oid, int animation) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.KILL_MONSTER.getValue()); - mplew.writeInt(oid); - mplew.write(animation); - mplew.write(animation); - return mplew.getPacket(); + public static Packet killMonster(int objId, int animation) { + OutPacket p = OutPacket.create(SendOpcode.KILL_MONSTER); + p.writeInt(objId); + p.writeByte(animation); + p.writeByte(animation); + return p; } - public static byte[] updateMapItemObject(MapleMapItem drop, boolean giveOwnership) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DROP_ITEM_FROM_MAPOBJECT.getValue()); - mplew.write(2); - mplew.writeInt(drop.getObjectId()); - mplew.writeBool(drop.getMeso() > 0); - mplew.writeInt(drop.getItemId()); - mplew.writeInt(giveOwnership ? 0 : -1); - mplew.write(drop.hasExpiredOwnershipTime() ? 2 : drop.getDropType()); - mplew.writePos(drop.getPosition()); - mplew.writeInt(giveOwnership ? 0 : -1); + public static Packet updateMapItemObject(MapleMapItem drop, boolean giveOwnership) { + OutPacket p = OutPacket.create(SendOpcode.DROP_ITEM_FROM_MAPOBJECT); + p.writeByte(2); + p.writeInt(drop.getObjectId()); + p.writeBool(drop.getMeso() > 0); + p.writeInt(drop.getItemId()); + p.writeInt(giveOwnership ? 0 : -1); + p.writeByte(drop.hasExpiredOwnershipTime() ? 2 : drop.getDropType()); + p.writePos(drop.getPosition()); + p.writeInt(giveOwnership ? 0 : -1); if (drop.getMeso() == 0) { - addExpirationTime(mplew, drop.getItem().getExpiration()); + addExpirationTime(p, drop.getItem().getExpiration()); } - mplew.write(drop.isPlayerDrop() ? 0 : 1); - return mplew.getPacket(); + p.writeBool(!drop.isPlayerDrop()); + return p; } - public static byte[] dropItemFromMapObject(MapleCharacter player, MapleMapItem drop, Point dropfrom, Point dropto, byte mod) { + public static Packet dropItemFromMapObject(MapleCharacter player, MapleMapItem drop, Point dropfrom, Point dropto, byte mod) { int dropType = drop.getDropType(); if (drop.hasClientsideOwnership(player) && dropType < 3) { dropType = 2; } - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DROP_ITEM_FROM_MAPOBJECT.getValue()); - mplew.write(mod); - mplew.writeInt(drop.getObjectId()); - mplew.writeBool(drop.getMeso() > 0); // 1 mesos, 0 item, 2 and above all item meso bag, - mplew.writeInt(drop.getItemId()); // drop object ID - mplew.writeInt(drop.getClientsideOwnerId()); // owner charid/partyid :) - mplew.write(dropType); // 0 = timeout for non-owner, 1 = timeout for non-owner's party, 2 = FFA, 3 = explosive/FFA - mplew.writePos(dropto); - mplew.writeInt(drop.getDropper().getObjectId()); // dropper oid, found thanks to Li Jixue + OutPacket p = OutPacket.create(SendOpcode.DROP_ITEM_FROM_MAPOBJECT); + p.writeByte(mod); + p.writeInt(drop.getObjectId()); + p.writeBool(drop.getMeso() > 0); // 1 mesos, 0 item, 2 and above all item meso bag, + p.writeInt(drop.getItemId()); // drop object ID + p.writeInt(drop.getClientsideOwnerId()); // owner charid/partyid :) + p.writeByte(dropType); // 0 = timeout for non-owner, 1 = timeout for non-owner's party, 2 = FFA, 3 = explosive/FFA + p.writePos(dropto); + p.writeInt(drop.getDropper().getObjectId()); // dropper oid, found thanks to Li Jixue if (mod != 2) { - mplew.writePos(dropfrom); - mplew.writeShort(0);//Fh? + p.writePos(dropfrom); + p.writeShort(0);//Fh? } if (drop.getMeso() == 0) { - addExpirationTime(mplew, drop.getItem().getExpiration()); + addExpirationTime(p, drop.getItem().getExpiration()); } - mplew.write(drop.isPlayerDrop() ? 0 : 1); //pet EQP pickup - return mplew.getPacket(); + p.writeByte(drop.isPlayerDrop() ? 0 : 1); //pet EQP pickup + return p; } - /** - * Guild Name & Mark update packet, thanks to Arnah (Vertisy) - * - * @param guildName The Guild name, blank for nothing. - */ - public static byte[] guildNameChanged(int chrid, String guildName) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_NAME_CHANGED.getValue()); - mplew.writeInt(chrid); - mplew.writeMapleAsciiString(guildName); - return mplew.getPacket(); - } - - public static byte[] guildMarkChanged(int chrid, MapleGuild guild) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_MARK_CHANGED.getValue()); - mplew.writeInt(chrid); - mplew.writeShort(guild.getLogoBG()); - mplew.write(guild.getLogoBGColor()); - mplew.writeShort(guild.getLogo()); - mplew.write(guild.getLogoColor()); - return mplew.getPacket(); - } - - private static void writeForeignBuffs(MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.writeInt(0); - mplew.writeShort(0); //v83 - mplew.write(0xFC); - mplew.write(1); + private static void writeForeignBuffs(OutPacket p, MapleCharacter chr) { + p.writeInt(0); + p.writeShort(0); //v83 + p.writeByte(0xFC); + p.writeByte(1); if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) { - mplew.writeInt(2); + p.writeInt(2); } else { - mplew.writeInt(0); + p.writeInt(0); } long buffmask = 0; Integer buffvalue = null; @@ -1914,63 +1820,63 @@ public class PacketCreator { if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) { buffvalue = Integer.valueOf(chr.getBuffedValue(MapleBuffStat.MORPH)); } - mplew.writeInt((int) ((buffmask >> 32) & 0xffffffffL)); + p.writeInt((int) ((buffmask >> 32) & 0xffffffffL)); if (buffvalue != null) { if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) { //TEST - mplew.writeShort(buffvalue); + p.writeShort(buffvalue); } else { - mplew.write(buffvalue.byteValue()); + p.writeByte(buffvalue.byteValue()); } } - mplew.writeInt((int) (buffmask & 0xffffffffL)); + p.writeInt((int) (buffmask & 0xffffffffL)); // Energy Charge - mplew.writeInt(chr.getEnergyBar() == 15000 ? 1 : 0); - mplew.writeShort(0); - mplew.skip(4); + p.writeInt(chr.getEnergyBar() == 15000 ? 1 : 0); + p.writeShort(0); + p.skip(4); boolean dashBuff = chr.getBuffedValue(MapleBuffStat.DASH) != null; // Dash Speed - mplew.writeInt(dashBuff ? 1 << 24 : 0); - mplew.skip(11); - mplew.writeShort(0); + p.writeInt(dashBuff ? 1 << 24 : 0); + p.skip(11); + p.writeShort(0); // Dash Jump - mplew.skip(9); - mplew.writeInt(dashBuff ? 1 << 24 : 0); - mplew.writeShort(0); - mplew.write(0); + p.skip(9); + p.writeInt(dashBuff ? 1 << 24 : 0); + p.writeShort(0); + p.writeByte(0); // Monster Riding Integer bv = chr.getBuffedValue(MapleBuffStat.MONSTER_RIDING); if (bv != null) { MapleMount mount = chr.getMount(); if (mount != null) { - mplew.writeInt(mount.getItemId()); - mplew.writeInt(mount.getSkillId()); + p.writeInt(mount.getItemId()); + p.writeInt(mount.getSkillId()); } else { - mplew.writeLong(0); + p.writeLong(0); } } else { - mplew.writeLong(0); + p.writeLong(0); } int CHAR_MAGIC_SPAWN = Randomizer.nextInt(); // skill references found thanks to Rien dev team - mplew.writeInt(CHAR_MAGIC_SPAWN); + p.writeInt(CHAR_MAGIC_SPAWN); // Speed Infusion - mplew.skip(8); - mplew.writeInt(CHAR_MAGIC_SPAWN); - mplew.write(0); - mplew.writeInt(CHAR_MAGIC_SPAWN); - mplew.writeShort(0); + p.skip(8); + p.writeInt(CHAR_MAGIC_SPAWN); + p.writeByte(0); + p.writeInt(CHAR_MAGIC_SPAWN); + p.writeShort(0); // Homing Beacon - mplew.skip(9); - mplew.writeInt(CHAR_MAGIC_SPAWN); - mplew.writeInt(0); + p.skip(9); + p.writeInt(CHAR_MAGIC_SPAWN); + p.writeInt(0); // Zombify - mplew.skip(9); - mplew.writeInt(CHAR_MAGIC_SPAWN); - mplew.writeShort(0); - mplew.writeShort(0); + p.skip(9); + p.writeInt(CHAR_MAGIC_SPAWN); + p.writeShort(0); + p.writeShort(0); } /** @@ -1981,140 +1887,138 @@ public class PacketCreator { * @param enteringField Whether the character to spawn is not yet present in the map or already is. * @return The spawn player packet. */ - public static byte[] spawnPlayerMapObject(MapleClient target, MapleCharacter chr, boolean enteringField) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_PLAYER.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(chr.getLevel()); //v83 - mplew.writeMapleAsciiString(chr.getName()); + public static Packet spawnPlayerMapObject(MapleClient target, MapleCharacter chr, boolean enteringField) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_PLAYER); + p.writeInt(chr.getId()); + p.writeByte(chr.getLevel()); //v83 + p.writeString(chr.getName()); if (chr.getGuildId() < 1) { - mplew.writeMapleAsciiString(""); - mplew.write(new byte[6]); + p.writeString(""); + p.writeBytes(new byte[6]); } else { MapleGuildSummary gs = chr.getClient().getWorldServer().getGuildSummary(chr.getGuildId(), chr.getWorld()); if (gs != null) { - mplew.writeMapleAsciiString(gs.getName()); - mplew.writeShort(gs.getLogoBG()); - mplew.write(gs.getLogoBGColor()); - mplew.writeShort(gs.getLogo()); - mplew.write(gs.getLogoColor()); + p.writeString(gs.getName()); + p.writeShort(gs.getLogoBG()); + p.writeByte(gs.getLogoBGColor()); + p.writeShort(gs.getLogo()); + p.writeByte(gs.getLogoColor()); } else { - mplew.writeMapleAsciiString(""); - mplew.write(new byte[6]); + p.writeString(""); + p.writeBytes(new byte[6]); } } - writeForeignBuffs(mplew, chr); + writeForeignBuffs(p, chr); - mplew.writeShort(chr.getJob().getId()); + p.writeShort(chr.getJob().getId()); - /* replace "mplew.writeShort(chr.getJob().getId())" with this snippet for 3rd person FJ animation on all classes + /* replace "p.writeShort(chr.getJob().getId())" with this snippet for 3rd person FJ animation on all classes if (chr.getJob().isA(MapleJob.HERMIT) || chr.getJob().isA(MapleJob.DAWNWARRIOR2) || chr.getJob().isA(MapleJob.NIGHTWALKER2)) { - mplew.writeShort(chr.getJob().getId()); + p.writeShort(chr.getJob().getId()); } else { - mplew.writeShort(412); + p.writeShort(412); }*/ - addCharLook(mplew, chr, false); - mplew.writeInt(chr.getInventory(MapleInventoryType.CASH).countById(5110000)); - mplew.writeInt(chr.getItemEffect()); - mplew.writeInt(ItemConstants.getInventoryType(chr.getChair()) == MapleInventoryType.SETUP ? chr.getChair() : 0); + addCharLook(p, chr, false); + p.writeInt(chr.getInventory(MapleInventoryType.CASH).countById(5110000)); + p.writeInt(chr.getItemEffect()); + p.writeInt(ItemConstants.getInventoryType(chr.getChair()) == MapleInventoryType.SETUP ? chr.getChair() : 0); if (enteringField) { Point spawnPos = new Point(chr.getPosition()); spawnPos.y -= 42; - mplew.writePos(spawnPos); - mplew.write(6); + p.writePos(spawnPos); + p.writeByte(6); } else { - mplew.writePos(chr.getPosition()); - mplew.write(chr.getStance()); + p.writePos(chr.getPosition()); + p.writeByte(chr.getStance()); } - mplew.writeShort(0);//chr.getFh() - mplew.write(0); + p.writeShort(0);//chr.getFh() + p.writeByte(0); MaplePet[] pet = chr.getPets(); for (int i = 0; i < 3; i++) { if (pet[i] != null) { - addPetInfo(mplew, pet[i], false); + addPetInfo(p, pet[i], false); } } - mplew.write(0); //end of pets + p.writeByte(0); //end of pets if (chr.getMount() == null) { - mplew.writeInt(1); // mob level - mplew.writeLong(0); // mob exp + tiredness + p.writeInt(1); // mob level + p.writeLong(0); // mob exp + tiredness } else { - mplew.writeInt(chr.getMount().getLevel()); - mplew.writeInt(chr.getMount().getExp()); - mplew.writeInt(chr.getMount().getTiredness()); + p.writeInt(chr.getMount().getLevel()); + p.writeInt(chr.getMount().getExp()); + p.writeInt(chr.getMount().getTiredness()); } MaplePlayerShop mps = chr.getPlayerShop(); if (mps != null && mps.isOwner(chr)) { if (mps.hasFreeSlot()) { - addAnnounceBox(mplew, mps, mps.getVisitors().length); + addAnnounceBox(p, mps, mps.getVisitors().length); } else { - addAnnounceBox(mplew, mps, 1); + addAnnounceBox(p, mps, 1); } } else { MapleMiniGame miniGame = chr.getMiniGame(); if (miniGame != null && miniGame.isOwner(chr)) { if (miniGame.hasFreeSlot()) { - addAnnounceBox(mplew, miniGame, 1, 0); + addAnnounceBox(p, miniGame, 1, 0); } else { - addAnnounceBox(mplew, miniGame, 2, miniGame.isMatchInProgress() ? 1 : 0); + addAnnounceBox(p, miniGame, 2, miniGame.isMatchInProgress() ? 1 : 0); } } else { - mplew.write(0); + p.writeByte(0); } } if (chr.getChalkboard() != null) { - mplew.write(1); - mplew.writeMapleAsciiString(chr.getChalkboard()); + p.writeByte(1); + p.writeString(chr.getChalkboard()); } else { - mplew.write(0); + p.writeByte(0); } - addRingLook(mplew, chr, true); // crush - addRingLook(mplew, chr, false); // friendship - addMarriageRingLook(target, mplew, chr); - encodeNewYearCardInfo(mplew, chr); // new year seems to crash sometimes... - mplew.write(0); - mplew.write(0); - mplew.write(chr.getTeam());//only needed in specific fields - return mplew.getPacket(); + addRingLook(p, chr, true); // crush + addRingLook(p, chr, false); // friendship + addMarriageRingLook(target, p, chr); + encodeNewYearCardInfo(p, chr); // new year seems to crash sometimes... + p.writeByte(0); + p.writeByte(0); + p.writeByte(chr.getTeam());//only needed in specific fields + return p; } - private static void encodeNewYearCardInfo(MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void encodeNewYearCardInfo(OutPacket p, MapleCharacter chr) { Set newyears = chr.getReceivedNewYearRecords(); if (!newyears.isEmpty()) { - mplew.write(1); + p.writeByte(1); - mplew.writeInt(newyears.size()); + p.writeInt(newyears.size()); for (NewYearCardRecord nyc : newyears) { - mplew.writeInt(nyc.getId()); + p.writeInt(nyc.getId()); } } else { - mplew.write(0); + p.writeByte(0); } } - public static byte[] onNewYearCardRes(MapleCharacter user, int cardId, int mode, int msg) { + public static Packet onNewYearCardRes(MapleCharacter user, int cardId, int mode, int msg) { NewYearCardRecord newyear = user.getNewYearRecord(cardId); return onNewYearCardRes(user, newyear, mode, msg); } - public static byte[] onNewYearCardRes(MapleCharacter user, NewYearCardRecord newyear, int mode, int msg) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NEW_YEAR_CARD_RES.getValue()); - mplew.write(mode); + public static Packet onNewYearCardRes(MapleCharacter user, NewYearCardRecord newyear, int mode, int msg) { + OutPacket p = OutPacket.create(SendOpcode.NEW_YEAR_CARD_RES); + p.writeByte(mode); switch (mode) { case 4: // Successfully sent a New Year Card\r\n to %s. case 6: // Successfully received a New Year Card. - encodeNewYearCard(newyear, mplew); + encodeNewYearCard(newyear, p); break; case 8: // Successfully deleted a New Year Card. - mplew.writeInt(newyear.getId()); + p.writeInt(newyear.getId()); break; case 5: // Nexon's stupid and makes 4 modes do the same operation.. @@ -2129,53 +2033,53 @@ public class PacketCreator { // 0x15: An error occured during DB operation. // 0x16: An unknown error occured ! // 0xF: You cannot send a card to yourself ! - mplew.write(msg); + p.writeByte(msg); break; case 0xA: // GetUnreceivedList_Done int nSN = 1; - mplew.writeInt(nSN); + p.writeInt(nSN); if ((nSN - 1) <= 98 && nSN > 0) {//lol nexon are you kidding for (int i = 0; i < nSN; i++) { - mplew.writeInt(newyear.getId()); - mplew.writeInt(newyear.getSenderId()); - mplew.writeMapleAsciiString(newyear.getSenderName()); + p.writeInt(newyear.getId()); + p.writeInt(newyear.getSenderId()); + p.writeString(newyear.getSenderName()); } } break; case 0xC: // NotiArrived - mplew.writeInt(newyear.getId()); - mplew.writeMapleAsciiString(newyear.getSenderName()); + p.writeInt(newyear.getId()); + p.writeString(newyear.getSenderName()); break; case 0xD: // BroadCast_AddCardInfo - mplew.writeInt(newyear.getId()); - mplew.writeInt(user.getId()); + p.writeInt(newyear.getId()); + p.writeInt(user.getId()); break; case 0xE: // BroadCast_RemoveCardInfo - mplew.writeInt(newyear.getId()); + p.writeInt(newyear.getId()); break; } - return mplew.getPacket(); + return p; } - private static void encodeNewYearCard(NewYearCardRecord newyear, MaplePacketLittleEndianWriter mplew) { - mplew.writeInt(newyear.getId()); - mplew.writeInt(newyear.getSenderId()); - mplew.writeMapleAsciiString(newyear.getSenderName()); - mplew.writeBool(newyear.isSenderCardDiscarded()); - mplew.writeLong(newyear.getDateSent()); - mplew.writeInt(newyear.getReceiverId()); - mplew.writeMapleAsciiString(newyear.getReceiverName()); - mplew.writeBool(newyear.isReceiverCardDiscarded()); - mplew.writeBool(newyear.isReceiverCardReceived()); - mplew.writeLong(newyear.getDateReceived()); - mplew.writeMapleAsciiString(newyear.getMessage()); + private static void encodeNewYearCard(NewYearCardRecord newyear, OutPacket p) { + p.writeInt(newyear.getId()); + p.writeInt(newyear.getSenderId()); + p.writeString(newyear.getSenderName()); + p.writeBool(newyear.isSenderCardDiscarded()); + p.writeLong(newyear.getDateSent()); + p.writeInt(newyear.getReceiverId()); + p.writeString(newyear.getReceiverName()); + p.writeBool(newyear.isReceiverCardDiscarded()); + p.writeBool(newyear.isReceiverCardReceived()); + p.writeLong(newyear.getDateReceived()); + p.writeString(newyear.getMessage()); } - private static void addRingLook(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr, boolean crush) { + private static void addRingLook(final OutPacket p, MapleCharacter chr, boolean crush) { List rings; if (crush) { rings = chr.getCrushRings(); @@ -2187,277 +2091,263 @@ public class PacketCreator { if (ring.equipped()) { if (yes == false) { yes = true; - mplew.write(1); + p.writeByte(1); } - mplew.writeInt(ring.getRingId()); - mplew.writeInt(0); - mplew.writeInt(ring.getPartnerRingId()); - mplew.writeInt(0); - mplew.writeInt(ring.getItemId()); + p.writeInt(ring.getRingId()); + p.writeInt(0); + p.writeInt(ring.getPartnerRingId()); + p.writeInt(0); + p.writeInt(ring.getItemId()); } } if (yes == false) { - mplew.write(0); + p.writeByte(0); } } - private static void addMarriageRingLook(MapleClient target, final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + private static void addMarriageRingLook(MapleClient target, final OutPacket p, MapleCharacter chr) { MapleRing ring = chr.getMarriageRing(); if (ring == null || !ring.equipped()) { - mplew.write(0); + p.writeByte(0); } else { - mplew.write(1); + p.writeByte(1); MapleCharacter targetChr = target.getPlayer(); if (targetChr != null && targetChr.getPartnerId() == chr.getId()) { - mplew.writeInt(0); - mplew.writeInt(0); + p.writeInt(0); + p.writeInt(0); } else { - mplew.writeInt(chr.getId()); - mplew.writeInt(ring.getPartnerChrId()); + p.writeInt(chr.getId()); + p.writeInt(ring.getPartnerChrId()); } - mplew.writeInt(ring.getItemId()); + p.writeInt(ring.getItemId()); } } /** * Adds a announcement box to an existing MaplePacketLittleEndianWriter. * - * @param mplew The MaplePacketLittleEndianWriter to add an announcement box + * @param p The MaplePacketLittleEndianWriter to add an announcement box * to. * @param shop The shop to announce. */ - private static void addAnnounceBox(final MaplePacketLittleEndianWriter mplew, MaplePlayerShop shop, int availability) { - mplew.write(4); - mplew.writeInt(shop.getObjectId()); - mplew.writeMapleAsciiString(shop.getDescription()); - mplew.write(0); - mplew.write(0); - mplew.write(1); - mplew.write(availability); - mplew.write(0); + private static void addAnnounceBox(final OutPacket p, MaplePlayerShop shop, int availability) { + p.writeByte(4); + p.writeInt(shop.getObjectId()); + p.writeString(shop.getDescription()); + p.writeByte(0); + p.writeByte(0); + p.writeByte(1); + p.writeByte(availability); + p.writeByte(0); } - private static void addAnnounceBox(final MaplePacketLittleEndianWriter mplew, MapleMiniGame game, int ammount, int joinable) { - mplew.write(game.getGameType().getValue()); - mplew.writeInt(game.getObjectId()); // gameid/shopid - mplew.writeMapleAsciiString(game.getDescription()); // desc - mplew.writeBool(!game.getPassword().isEmpty()); // password here, thanks GabrielSin - mplew.write(game.getPieceType()); - mplew.write(ammount); - mplew.write(2); //player capacity - mplew.write(joinable); + private static void addAnnounceBox(final OutPacket p, MapleMiniGame game, int ammount, int joinable) { + p.writeByte(game.getGameType().getValue()); + p.writeInt(game.getObjectId()); // gameid/shopid + p.writeString(game.getDescription()); // desc + p.writeBool(!game.getPassword().isEmpty()); // password here, thanks GabrielSin + p.writeByte(game.getPieceType()); + p.writeByte(ammount); + p.writeByte(2); //player capacity + p.writeByte(joinable); } - private static void updateHiredMerchantBoxInfo(MaplePacketLittleEndianWriter mplew, MapleHiredMerchant hm) { + private static void updateHiredMerchantBoxInfo(OutPacket p, MapleHiredMerchant hm) { byte[] roomInfo = hm.getShopRoomInfo(); - mplew.write(5); - mplew.writeInt(hm.getObjectId()); - mplew.writeMapleAsciiString(hm.getDescription()); - mplew.write(hm.getItemId() % 100); - mplew.write(roomInfo); // visitor capacity here, thanks GabrielSin + p.writeByte(5); + p.writeInt(hm.getObjectId()); + p.writeString(hm.getDescription()); + p.writeByte(hm.getItemId() % 100); + p.writeBytes(roomInfo); // visitor capacity here, thanks GabrielSin } - public static byte[] updateHiredMerchantBox(MapleHiredMerchant hm) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_HIRED_MERCHANT.getValue()); - mplew.writeInt(hm.getOwnerId()); - - updateHiredMerchantBoxInfo(mplew, hm); - return mplew.getPacket(); + public static Packet updateHiredMerchantBox(MapleHiredMerchant hm) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_HIRED_MERCHANT); + p.writeInt(hm.getOwnerId()); + updateHiredMerchantBoxInfo(p, hm); + return p; } - private static void updatePlayerShopBoxInfo(final MaplePacketLittleEndianWriter mplew, MaplePlayerShop shop) { + private static void updatePlayerShopBoxInfo(OutPacket p, MaplePlayerShop shop) { byte[] roomInfo = shop.getShopRoomInfo(); - mplew.write(4); - mplew.writeInt(shop.getObjectId()); - mplew.writeMapleAsciiString(shop.getDescription()); - mplew.write(0); // pw - mplew.write(shop.getItemId() % 100); - mplew.write(roomInfo[0]); // curPlayers - mplew.write(roomInfo[1]); // maxPlayers - mplew.write(0); + p.writeByte(4); + p.writeInt(shop.getObjectId()); + p.writeString(shop.getDescription()); + p.writeByte(0); // pw + p.writeByte(shop.getItemId() % 100); + p.writeByte(roomInfo[0]); // curPlayers + p.writeByte(roomInfo[1]); // maxPlayers + p.writeByte(0); } - public static byte[] updatePlayerShopBox(MaplePlayerShop shop) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); - mplew.writeInt(shop.getOwner().getId()); - - updatePlayerShopBoxInfo(mplew, shop); - return mplew.getPacket(); + public static Packet updatePlayerShopBox(MaplePlayerShop shop) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_CHAR_BOX); + p.writeInt(shop.getOwner().getId()); + updatePlayerShopBoxInfo(p, shop); + return p; } - public static byte[] removePlayerShopBox(MaplePlayerShop shop) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); - mplew.writeInt(shop.getOwner().getId()); - mplew.write(0); - return mplew.getPacket(); + public static Packet removePlayerShopBox(MaplePlayerShop shop) { + OutPacket p = OutPacket.create(SendOpcode.UPDATE_CHAR_BOX); + p.writeInt(shop.getOwner().getId()); + p.writeByte(0); + return p; } - public static byte[] facialExpression(MapleCharacter from, int expression) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(10); - mplew.writeShort(SendOpcode.FACIAL_EXPRESSION.getValue()); - mplew.writeInt(from.getId()); - mplew.writeInt(expression); - return mplew.getPacket(); + public static Packet facialExpression(MapleCharacter from, int expression) { + OutPacket p = OutPacket.create(SendOpcode.FACIAL_EXPRESSION); + p.writeInt(from.getId()); + p.writeInt(expression); + return p; } - private static void rebroadcastMovementList(LittleEndianWriter lew, SeekableLittleEndianAccessor slea, long movementDataLength) { + private static void rebroadcastMovementList(OutPacket op, SeekableLittleEndianAccessor slea, long movementDataLength) { //movement command length is sent by client, probably not a big issue? (could be calculated on server) //if multiple write/reads are slow, could use (and cache?) a byte[] buffer for (long i = 0; i < movementDataLength; i++) { - lew.write(slea.readByte()); + op.writeByte(slea.readByte()); } } - private static void serializeMovementList(LittleEndianWriter lew, List moves) { - lew.write(moves.size()); + private static void serializeMovementList(OutPacket p, List moves) { + p.writeByte(moves.size()); for (LifeMovementFragment move : moves) { - move.serialize(lew); + move.serialize(p); } } - public static byte[] movePlayer(int cid, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MOVE_PLAYER.getValue()); - mplew.writeInt(cid); - mplew.writeInt(0); - rebroadcastMovementList(mplew, movementSlea, movementDataLength); - return mplew.getPacket(); + public static Packet movePlayer(int chrId, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { + OutPacket p = OutPacket.create(SendOpcode.MOVE_PLAYER); + p.writeInt(chrId); + p.writeInt(0); + rebroadcastMovementList(p, movementSlea, movementDataLength); + return p; } - public static byte[] moveSummon(int cid, int oid, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MOVE_SUMMON.getValue()); - mplew.writeInt(cid); - mplew.writeInt(oid); - mplew.writePos(startPos); - rebroadcastMovementList(mplew, movementSlea, movementDataLength); - return mplew.getPacket(); + public static Packet moveSummon(int cid, int oid, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { + final OutPacket p = OutPacket.create(SendOpcode.MOVE_SUMMON); + p.writeInt(cid); + p.writeInt(oid); + p.writePos(startPos); + rebroadcastMovementList(p, movementSlea, movementDataLength); + return p; } - public static byte[] moveMonster(int oid, boolean skillPossible, int skill, int skillId, int skillLevel, int pOption, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MOVE_MONSTER.getValue()); - mplew.writeInt(oid); - mplew.write(0); - mplew.writeBool(skillPossible); - mplew.write(skill); - mplew.write(skillId); - mplew.write(skillLevel); - mplew.writeShort(pOption); - mplew.writePos(startPos); - rebroadcastMovementList(mplew, movementSlea, movementDataLength); - return mplew.getPacket(); + public static Packet moveMonster(int oid, boolean skillPossible, int skill, int skillId, int skillLevel, int pOption, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { + final OutPacket p = OutPacket.create(SendOpcode.MOVE_MONSTER); + p.writeInt(oid); + p.writeByte(0); + p.writeBool(skillPossible); + p.writeByte(skill); + p.writeByte(skillId); + p.writeByte(skillLevel); + p.writeShort(pOption); + p.writePos(startPos); + rebroadcastMovementList(p, movementSlea, movementDataLength); + return p; } - public static byte[] summonAttack(int cid, int summonOid, byte direction, List allDamage) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + public static Packet summonAttack(int cid, int summonOid, byte direction, List allDamage) { + OutPacket p = OutPacket.create(SendOpcode.SUMMON_ATTACK); //b2 00 29 f7 00 00 9a a3 04 00 c8 04 01 94 a3 04 00 06 ff 2b 00 - mplew.writeShort(SendOpcode.SUMMON_ATTACK.getValue()); - mplew.writeInt(cid); - mplew.writeInt(summonOid); - mplew.write(0); // char level - mplew.write(direction); - mplew.write(allDamage.size()); + p.writeInt(cid); + p.writeInt(summonOid); + p.writeByte(0); // char level + p.writeByte(direction); + p.writeByte(allDamage.size()); for (SummonAttackEntry attackEntry : allDamage) { - mplew.writeInt(attackEntry.getMonsterOid()); // oid - mplew.write(6); // who knows - mplew.writeInt(attackEntry.getDamage()); // damage + p.writeInt(attackEntry.getMonsterOid()); // oid + p.writeByte(6); // who knows + p.writeInt(attackEntry.getDamage()); // damage } - return mplew.getPacket(); + return p; } /* - public static byte[] summonAttack(int cid, int summonSkillId, byte direction, List allDamage) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + public static Packet summonAttack(int cid, int summonSkillId, byte direction, List allDamage) { + OutPacket p = OutPacket.create(SendOpcode); //b2 00 29 f7 00 00 9a a3 04 00 c8 04 01 94 a3 04 00 06 ff 2b 00 - mplew.writeShort(SendOpcode.SUMMON_ATTACK.getValue()); - mplew.writeInt(cid); - mplew.writeInt(summonSkillId); - mplew.write(direction); - mplew.write(4); - mplew.write(allDamage.size()); + SUMMON_ATTACK); + p.writeInt(cid); + p.writeInt(summonSkillId); + p.writeByte(direction); + p.writeByte(4); + p.writeByte(allDamage.size()); for (SummonAttackEntry attackEntry : allDamage) { - mplew.writeInt(attackEntry.getMonsterOid()); // oid - mplew.write(6); // who knows - mplew.writeInt(attackEntry.getDamage()); // damage + p.writeInt(attackEntry.getMonsterOid()); // oid + p.writeByte(6); // who knows + p.writeInt(attackEntry.getDamage()); // damage } - return mplew.getPacket(); + return p; } */ - public static byte[] closeRangeAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, Map> damage, int speed, int direction, int display) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CLOSE_RANGE_ATTACK.getValue()); - addAttackBody(mplew, chr, skill, skilllevel, stance, numAttackedAndDamage, 0, damage, speed, direction, display); - return mplew.getPacket(); + public static Packet closeRangeAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, Map> damage, int speed, int direction, int display) { + final OutPacket p = OutPacket.create(SendOpcode.CLOSE_RANGE_ATTACK); + addAttackBody(p, chr, skill, skilllevel, stance, numAttackedAndDamage, 0, damage, speed, direction, display); + return p; } - public static byte[] rangedAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, int projectile, Map> damage, int speed, int direction, int display) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.RANGED_ATTACK.getValue()); - addAttackBody(mplew, chr, skill, skilllevel, stance, numAttackedAndDamage, projectile, damage, speed, direction, display); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet rangedAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, int projectile, Map> damage, int speed, int direction, int display) { + final OutPacket p = OutPacket.create(SendOpcode.RANGED_ATTACK); + addAttackBody(p, chr, skill, skilllevel, stance, numAttackedAndDamage, projectile, damage, speed, direction, display); + p.writeInt(0); + return p; } - public static byte[] magicAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, Map> damage, int charge, int speed, int direction, int display) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAGIC_ATTACK.getValue()); - addAttackBody(mplew, chr, skill, skilllevel, stance, numAttackedAndDamage, 0, damage, speed, direction, display); + public static Packet magicAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, Map> damage, int charge, int speed, int direction, int display) { + final OutPacket p = OutPacket.create(SendOpcode.MAGIC_ATTACK); + addAttackBody(p, chr, skill, skilllevel, stance, numAttackedAndDamage, 0, damage, speed, direction, display); if (charge != -1) { - mplew.writeInt(charge); + p.writeInt(charge); } - return mplew.getPacket(); + return p; } - private static void addAttackBody(LittleEndianWriter lew, MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, int projectile, Map> damage, int speed, int direction, int display) { - lew.writeInt(chr.getId()); - lew.write(numAttackedAndDamage); - lew.write(0x5B);//? - lew.write(skilllevel); + private static void addAttackBody(OutPacket p, MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, int projectile, Map> damage, int speed, int direction, int display) { + p.writeInt(chr.getId()); + p.writeByte(numAttackedAndDamage); + p.writeByte(0x5B);//? + p.writeByte(skilllevel); if (skilllevel > 0) { - lew.writeInt(skill); + p.writeInt(skill); } - lew.write(display); - lew.write(direction); - lew.write(stance); - lew.write(speed); - lew.write(0x0A); - lew.writeInt(projectile); + p.writeByte(display); + p.writeByte(direction); + p.writeByte(stance); + p.writeByte(speed); + p.writeByte(0x0A); + p.writeInt(projectile); for (Integer oned : damage.keySet()) { List onedList = damage.get(oned); if (onedList != null) { - lew.writeInt(oned); - lew.write(0x0); + p.writeInt(oned); + p.writeByte(0x0); if (skill == 4211006) { - lew.write(onedList.size()); + p.writeByte(onedList.size()); } for (Integer eachd : onedList) { - lew.writeInt(eachd); + p.writeInt(eachd); } } } } - public static byte[] throwGrenade(int cid, Point p, int keyDown, int skillId, int skillLevel) { // packets found thanks to GabrielSin - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.THROW_GRENADE.getValue()); - mplew.writeInt(cid); - mplew.writeInt(p.x); - mplew.writeInt(p.y); - mplew.writeInt(keyDown); - mplew.writeInt(skillId); - mplew.writeInt(skillLevel); - return mplew.getPacket(); + public static Packet throwGrenade(int cid, Point pos, int keyDown, int skillId, int skillLevel) { // packets found thanks to GabrielSin + OutPacket p = OutPacket.create(SendOpcode.THROW_GRENADE); + p.writeInt(cid); + p.writeInt(pos.x); + p.writeInt(pos.y); + p.writeInt(keyDown); + p.writeInt(skillId); + p.writeInt(skillLevel); + return p; } // someone thought it was a good idea to handle floating point representation through packets ROFL @@ -2465,29 +2355,28 @@ public class PacketCreator { return (int) (Double.doubleToLongBits(d) >> 48); } - public static byte[] getNPCShop(MapleClient c, int sid, List items) { + public static Packet getNPCShop(MapleClient c, int sid, List items) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.OPEN_NPC_SHOP.getValue()); - mplew.writeInt(sid); - mplew.writeShort(items.size()); // item count + final OutPacket p = OutPacket.create(SendOpcode.OPEN_NPC_SHOP); + p.writeInt(sid); + p.writeShort(items.size()); // item count for (MapleShopItem item : items) { - mplew.writeInt(item.getItemId()); - mplew.writeInt(item.getPrice()); - mplew.writeInt(item.getPrice() == 0 ? item.getPitch() : 0); //Perfect Pitch - mplew.writeInt(0); //Can be used x minutes after purchase - mplew.writeInt(0); //Hmm + p.writeInt(item.getItemId()); + p.writeInt(item.getPrice()); + p.writeInt(item.getPrice() == 0 ? item.getPitch() : 0); //Perfect Pitch + p.writeInt(0); //Can be used x minutes after purchase + p.writeInt(0); //Hmm if (!ItemConstants.isRechargeable(item.getItemId())) { - mplew.writeShort(1); // stacksize o.o - mplew.writeShort(item.getBuyable()); + p.writeShort(1); // stacksize o.o + p.writeShort(item.getBuyable()); } else { - mplew.writeShort(0); - mplew.writeInt(0); - mplew.writeShort(doubleToShortBits(ii.getUnitPrice(item.getItemId()))); - mplew.writeShort(ii.getSlotMax(c, item.getItemId())); + p.writeShort(0); + p.writeInt(0); + p.writeShort(doubleToShortBits(ii.getUnitPrice(item.getItemId()))); + p.writeShort(ii.getSlotMax(c, item.getItemId())); } } - return mplew.getPacket(); + return p; } /* 00 = / @@ -2501,43 +2390,40 @@ public class PacketCreator { * 0D = You need more items * 0E = CRASH; LENGTH NEEDS TO BE LONGER :O */ - public static byte[] shopTransaction(byte code) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.CONFIRM_SHOP_TRANSACTION.getValue()); - mplew.write(code); - return mplew.getPacket(); + public static Packet shopTransaction(byte code) { + OutPacket p = OutPacket.create(SendOpcode.CONFIRM_SHOP_TRANSACTION); + p.writeByte(code); + return p; } - public static byte[] updateInventorySlotLimit(int type, int newLimit) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.INVENTORY_GROW.getValue()); - mplew.write(type); - mplew.write(newLimit); - return mplew.getPacket(); + public static Packet updateInventorySlotLimit(int type, int newLimit) { + final OutPacket p = OutPacket.create(SendOpcode.INVENTORY_GROW); + p.writeByte(type); + p.writeByte(newLimit); + return p; } - public static byte[] modifyInventory(boolean updateTick, final List mods) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.INVENTORY_OPERATION.getValue()); - mplew.writeBool(updateTick); - mplew.write(mods.size()); - //mplew.write(0); v104 :) + public static Packet modifyInventory(boolean updateTick, final List mods) { + OutPacket p = OutPacket.create(SendOpcode.INVENTORY_OPERATION); + p.writeBool(updateTick); + p.writeByte(mods.size()); + //p.writeByte(0); v104 :) int addMovement = -1; for (ModifyInventory mod : mods) { - mplew.write(mod.getMode()); - mplew.write(mod.getInventoryType()); - mplew.writeShort(mod.getMode() == 2 ? mod.getOldPosition() : mod.getPosition()); + p.writeByte(mod.getMode()); + p.writeByte(mod.getInventoryType()); + p.writeShort(mod.getMode() == 2 ? mod.getOldPosition() : mod.getPosition()); switch (mod.getMode()) { case 0: {//add item - addItemInfo(mplew, mod.getItem(), true); + addItemInfo(p, mod.getItem(), true); break; } case 1: {//update quantity - mplew.writeShort(mod.getQuantity()); + p.writeShort(mod.getQuantity()); break; } case 2: {//move - mplew.writeShort(mod.getPosition()); + p.writeShort(mod.getPosition()); if (mod.getPosition() < 0 || mod.getOldPosition() < 0) { addMovement = mod.getOldPosition() < 0 ? 1 : 2; } @@ -2553,92 +2439,84 @@ public class PacketCreator { mod.clear(); } if (addMovement > -1) { - mplew.write(addMovement); + p.writeByte(addMovement); } - return mplew.getPacket(); + return p; } - public static byte[] getScrollEffect(int chr, ScrollResult scrollSuccess, boolean legendarySpirit, boolean whiteScroll) { // thanks to Rien dev team - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_SCROLL_EFFECT.getValue()); - mplew.writeInt(chr); - mplew.writeBool(scrollSuccess == ScrollResult.SUCCESS); - mplew.writeBool(scrollSuccess == ScrollResult.CURSE); - mplew.writeBool(legendarySpirit); - mplew.writeBool(whiteScroll); - return mplew.getPacket(); + public static Packet getScrollEffect(int chr, ScrollResult scrollSuccess, boolean legendarySpirit, boolean whiteScroll) { // thanks to Rien dev team + OutPacket p = OutPacket.create(SendOpcode.SHOW_SCROLL_EFFECT); + p.writeInt(chr); + p.writeBool(scrollSuccess == ScrollResult.SUCCESS); + p.writeBool(scrollSuccess == ScrollResult.CURSE); + p.writeBool(legendarySpirit); + p.writeBool(whiteScroll); + return p; } - public static byte[] removePlayerFromMap(int cid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.REMOVE_PLAYER_FROM_MAP.getValue()); - mplew.writeInt(cid); - return mplew.getPacket(); + public static Packet removePlayerFromMap(int chrId) { + OutPacket p = OutPacket.create(SendOpcode.REMOVE_PLAYER_FROM_MAP); + p.writeInt(chrId); + return p; } - public static byte[] catchMessage(int message) { // not done, I guess - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BRIDLE_MOB_CATCH_FAIL.getValue()); - mplew.write(message); // 1 = too strong, 2 = Elemental Rock - mplew.writeInt(0);//Maybe itemid? - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet catchMessage(int message) { // not done, I guess + final OutPacket p = OutPacket.create(SendOpcode.BRIDLE_MOB_CATCH_FAIL); + p.writeByte(message); // 1 = too strong, 2 = Elemental Rock + p.writeInt(0);//Maybe itemid? + p.writeInt(0); + return p; } - public static byte[] showAllCharacter(int chars, int unk) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); - mplew.writeShort(SendOpcode.VIEW_ALL_CHAR.getValue()); - mplew.write(chars > 0 ? 1 : 5); // 2: already connected to server, 3 : unk error (view-all-characters), 5 : cannot find any - mplew.writeInt(chars); - mplew.writeInt(unk); - return mplew.getPacket(); + public static Packet showAllCharacter(int chars, int unk) { + OutPacket p = OutPacket.create(SendOpcode.VIEW_ALL_CHAR); + p.writeByte(chars > 0 ? 1 : 5); // 2: already connected to server, 3 : unk error (view-all-characters), 5 : cannot find any + p.writeInt(chars); + p.writeInt(unk); + return p; } - public static byte[] showAriantScoreBoard() { // thanks lrenex for pointing match's end scoreboard packet - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ARIANT_ARENA_SHOW_RESULT.getValue()); - return mplew.getPacket(); + public static Packet showAriantScoreBoard() { // thanks lrenex for pointing match's end scoreboard packet + return OutPacket.create(SendOpcode.ARIANT_ARENA_SHOW_RESULT); } - public static byte[] updateAriantPQRanking(final MapleCharacter chr, final int score) { + public static Packet updateAriantPQRanking(final MapleCharacter chr, final int score) { return updateAriantPQRanking(new LinkedHashMap() {{ put(chr, score); }}); } - public static byte[] updateAriantPQRanking(Map playerScore) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ARIANT_ARENA_USER_SCORE.getValue()); - mplew.write(playerScore.size()); + public static Packet updateAriantPQRanking(Map playerScore) { + OutPacket p = OutPacket.create(SendOpcode.ARIANT_ARENA_USER_SCORE); + p.writeByte(playerScore.size()); for (Entry e : playerScore.entrySet()) { - mplew.writeMapleAsciiString(e.getKey().getName()); - mplew.writeInt(e.getValue()); + p.writeString(e.getKey().getName()); + p.writeInt(e.getValue()); } - return mplew.getPacket(); + return p; } - public static byte[] updateWitchTowerScore(int score) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.WITCH_TOWER_SCORE_UPDATE.getValue()); - mplew.write(score); - return mplew.getPacket(); + public static Packet updateWitchTowerScore(int score) { + OutPacket p = OutPacket.create(SendOpcode.WITCH_TOWER_SCORE_UPDATE); + p.writeByte(score); + return p; } - public static byte[] silentRemoveItemFromMap(int oid) { - return removeItemFromMap(oid, 1, 0); + public static Packet silentRemoveItemFromMap(int objId) { + return removeItemFromMap(objId, 1, 0); } /** * animation: 0 - expire
1 - without animation
2 - pickup
4 - * explode
cid is ignored for 0 and 1 * - * @param oid + * @param objId * @param animation - * @param cid + * @param chrId * @return */ - public static byte[] removeItemFromMap(int oid, int animation, int cid) { - return removeItemFromMap(oid, animation, cid, false, 0); + public static Packet removeItemFromMap(int objId, int animation, int chrId) { + return removeItemFromMap(objId, animation, chrId, false, 0); } /** @@ -2646,112 +2524,104 @@ public class PacketCreator { * explode
cid is ignored for 0 and 1.

Flagging pet as true * will make a pet pick up the item. * - * @param oid + * @param objId * @param animation - * @param cid + * @param chrId * @param pet * @param slot * @return */ - public static byte[] removeItemFromMap(int oid, int animation, int cid, boolean pet, int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.REMOVE_ITEM_FROM_MAP.getValue()); - mplew.write(animation); // expire - mplew.writeInt(oid); + public static Packet removeItemFromMap(int objId, int animation, int chrId, boolean pet, int slot) { + OutPacket p = OutPacket.create(SendOpcode.REMOVE_ITEM_FROM_MAP); + p.writeByte(animation); // expire + p.writeInt(objId); if (animation >= 2) { - mplew.writeInt(cid); + p.writeInt(chrId); if (pet) { - mplew.write(slot); + p.writeByte(slot); } } - return mplew.getPacket(); + return p; } - public static byte[] updateCharLook(MapleClient target, MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_CHAR_LOOK.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(1); - addCharLook(mplew, chr, false); - addRingLook(mplew, chr, true); - addRingLook(mplew, chr, false); - addMarriageRingLook(target, mplew, chr); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet updateCharLook(MapleClient target, MapleCharacter chr) { + OutPacket p = OutPacket.create(SendOpcode.UPDATE_CHAR_LOOK); + p.writeInt(chr.getId()); + p.writeByte(1); + addCharLook(p, chr, false); + addRingLook(p, chr, true); + addRingLook(p, chr, false); + addMarriageRingLook(target, p, chr); + p.writeInt(0); + return p; } - public static byte[] damagePlayer(int skill, int monsteridfrom, int cid, int damage, int fake, int direction, boolean pgmr, int pgmr_1, boolean is_pg, int oid, int pos_x, int pos_y) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DAMAGE_PLAYER.getValue()); - mplew.writeInt(cid); - mplew.write(skill); + public static Packet damagePlayer(int skill, int monsteridfrom, int cid, int damage, int fake, int direction, boolean pgmr, int pgmr_1, boolean is_pg, int oid, int pos_x, int pos_y) { + final OutPacket p = OutPacket.create(SendOpcode.DAMAGE_PLAYER); + p.writeInt(cid); + p.writeByte(skill); if (skill == -3) { - mplew.writeInt(0); + p.writeInt(0); } - mplew.writeInt(damage); + p.writeInt(damage); if (skill != -4) { - mplew.writeInt(monsteridfrom); - mplew.write(direction); + p.writeInt(monsteridfrom); + p.writeByte(direction); if (pgmr) { - mplew.write(pgmr_1); - mplew.write(is_pg ? 1 : 0); - mplew.writeInt(oid); - mplew.write(6); - mplew.writeShort(pos_x); - mplew.writeShort(pos_y); - mplew.write(0); + p.writeByte(pgmr_1); + p.writeByte(is_pg ? 1 : 0); + p.writeInt(oid); + p.writeByte(6); + p.writeShort(pos_x); + p.writeShort(pos_y); + p.writeByte(0); } else { - mplew.writeShort(0); + p.writeShort(0); } - mplew.writeInt(damage); + p.writeInt(damage); if (fake > 0) { - mplew.writeInt(fake); + p.writeInt(fake); } } else { - mplew.writeInt(damage); + p.writeInt(damage); } - return mplew.getPacket(); + return p; } - public static byte[] sendMapleLifeCharacterInfo() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAPLELIFE_RESULT.getValue()); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet sendMapleLifeCharacterInfo() { + final OutPacket p = OutPacket.create(SendOpcode.MAPLELIFE_RESULT); + p.writeInt(0); + return p; } - public static byte[] sendMapleLifeNameError() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAPLELIFE_RESULT.getValue()); - mplew.writeInt(2); - mplew.writeInt(3); - mplew.write(0); - return mplew.getPacket(); + public static Packet sendMapleLifeNameError() { + OutPacket p = OutPacket.create(SendOpcode.MAPLELIFE_RESULT); + p.writeInt(2); + p.writeInt(3); + p.writeByte(0); + return p; } - public static byte[] sendMapleLifeError(int code) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAPLELIFE_ERROR.getValue()); - mplew.write(0); - mplew.writeInt(code); - return mplew.getPacket(); + public static Packet sendMapleLifeError(int code) { + OutPacket p = OutPacket.create(SendOpcode.MAPLELIFE_ERROR); + p.writeByte(0); + p.writeInt(code); + return p; } - public static byte[] charNameResponse(String charname, boolean nameUsed) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CHAR_NAME_RESPONSE.getValue()); - mplew.writeMapleAsciiString(charname); - mplew.write(nameUsed ? 1 : 0); - return mplew.getPacket(); + public static Packet charNameResponse(String charname, boolean nameUsed) { + final OutPacket p = OutPacket.create(SendOpcode.CHAR_NAME_RESPONSE); + p.writeString(charname); + p.writeByte(nameUsed ? 1 : 0); + return p; } - public static byte[] addNewCharEntry(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ADD_NEW_CHAR_ENTRY.getValue()); - mplew.write(0); - addCharEntry(mplew, chr, false); - return mplew.getPacket(); + public static Packet addNewCharEntry(MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.ADD_NEW_CHAR_ENTRY); + p.writeByte(0); + addCharEntry(p, chr, false); + return p; } /** @@ -2771,30 +2641,27 @@ public class PacketCreator { * @param state * @return */ - public static byte[] deleteCharResponse(int cid, int state) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DELETE_CHAR_RESPONSE.getValue()); - mplew.writeInt(cid); - mplew.write(state); - return mplew.getPacket(); + public static Packet deleteCharResponse(int cid, int state) { + final OutPacket p = OutPacket.create(SendOpcode.DELETE_CHAR_RESPONSE); + p.writeInt(cid); + p.writeByte(state); + return p; } - public static byte[] selectWorld(int world) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.LAST_CONNECTED_WORLD.getValue()); - mplew.writeInt(world);//According to GMS, it should be the world that contains the most characters (most active) - return mplew.getPacket(); + public static Packet selectWorld(int world) { + final OutPacket p = OutPacket.create(SendOpcode.LAST_CONNECTED_WORLD); + p.writeInt(world);//According to GMS, it should be the world that contains the most characters (most active) + return p; } - public static byte[] sendRecommended(List> worlds) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.RECOMMENDED_WORLD_MESSAGE.getValue()); - mplew.write(worlds.size());//size + public static Packet sendRecommended(List> worlds) { + final OutPacket p = OutPacket.create(SendOpcode.RECOMMENDED_WORLD_MESSAGE); + p.writeByte(worlds.size());//size for (Pair world : worlds) { - mplew.writeInt(world.getLeft()); - mplew.writeMapleAsciiString(world.getRight()); + p.writeInt(world.getLeft()); + p.writeString(world.getRight()); } - return mplew.getPacket(); + return p; } /** @@ -2802,15 +2669,14 @@ public class PacketCreator { * @param isSelf * @return */ - public static byte[] charInfo(MapleCharacter chr) { + public static Packet charInfo(MapleCharacter chr) { //3D 00 0A 43 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CHAR_INFO.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(chr.getLevel()); - mplew.writeShort(chr.getJob().getId()); - mplew.writeShort(chr.getFame()); - mplew.write(chr.getMarriageRing() != null ? 1 : 0); + final OutPacket p = OutPacket.create(SendOpcode.CHAR_INFO); + p.writeInt(chr.getId()); + p.writeByte(chr.getLevel()); + p.writeShort(chr.getJob().getId()); + p.writeShort(chr.getFame()); + p.writeByte(chr.getMarriageRing() != null ? 1 : 0); String guildName = ""; String allianceName = ""; if (chr.getGuildId() > 0) { @@ -2822,52 +2688,52 @@ public class PacketCreator { allianceName = alliance.getName(); } } - mplew.writeMapleAsciiString(guildName); - mplew.writeMapleAsciiString(allianceName); // does not seem to work - mplew.write(0); // pMedalInfo, thanks to Arnah (Vertisy) + p.writeString(guildName); + p.writeString(allianceName); // does not seem to work + p.writeByte(0); // pMedalInfo, thanks to Arnah (Vertisy) MaplePet[] pets = chr.getPets(); Item inv = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -114); for (int i = 0; i < 3; i++) { if (pets[i] != null) { - mplew.write(pets[i].getUniqueId()); - mplew.writeInt(pets[i].getItemId()); // petid - mplew.writeMapleAsciiString(pets[i].getName()); - mplew.write(pets[i].getLevel()); // pet level - mplew.writeShort(pets[i].getCloseness()); // pet closeness - mplew.write(pets[i].getFullness()); // pet fullness - mplew.writeShort(0); - mplew.writeInt(inv != null ? inv.getItemId() : 0); + p.writeByte(pets[i].getUniqueId()); + p.writeInt(pets[i].getItemId()); // petid + p.writeString(pets[i].getName()); + p.writeByte(pets[i].getLevel()); // pet level + p.writeShort(pets[i].getCloseness()); // pet closeness + p.writeByte(pets[i].getFullness()); // pet fullness + p.writeShort(0); + p.writeInt(inv != null ? inv.getItemId() : 0); } } - mplew.write(0); //end of pets + p.writeByte(0); //end of pets Item mount; //mounts can potentially crash the client if the player's level is not properly checked if (chr.getMount() != null && (mount = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -18)) != null && MapleItemInformationProvider.getInstance().getEquipLevelReq(mount.getItemId()) <= chr.getLevel()) { MapleMount mmount = chr.getMount(); - mplew.write(mmount.getId()); //mount - mplew.writeInt(mmount.getLevel()); //level - mplew.writeInt(mmount.getExp()); //exp - mplew.writeInt(mmount.getTiredness()); //tiredness + p.writeByte(mmount.getId()); //mount + p.writeInt(mmount.getLevel()); //level + p.writeInt(mmount.getExp()); //exp + p.writeInt(mmount.getTiredness()); //tiredness } else { - mplew.write(0); + p.writeByte(0); } - mplew.write(chr.getCashShop().getWishList().size()); + p.writeByte(chr.getCashShop().getWishList().size()); for (int sn : chr.getCashShop().getWishList()) { - mplew.writeInt(sn); + p.writeInt(sn); } MonsterBook book = chr.getMonsterBook(); - mplew.writeInt(book.getBookLevel()); - mplew.writeInt(book.getNormalCard()); - mplew.writeInt(book.getSpecialCard()); - mplew.writeInt(book.getTotalCards()); - mplew.writeInt(chr.getMonsterBookCover() > 0 ? MapleItemInformationProvider.getInstance().getCardMobId(chr.getMonsterBookCover()) : 0); + p.writeInt(book.getBookLevel()); + p.writeInt(book.getNormalCard()); + p.writeInt(book.getSpecialCard()); + p.writeInt(book.getTotalCards()); + p.writeInt(chr.getMonsterBookCover() > 0 ? MapleItemInformationProvider.getInstance().getCardMobId(chr.getMonsterBookCover()) : 0); Item medal = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -49); if (medal != null) { - mplew.writeInt(medal.getItemId()); + p.writeInt(medal.getItemId()); } else { - mplew.writeInt(0); + p.writeInt(0); } ArrayList medalQuests = new ArrayList<>(); List completed = chr.getCompletedQuests(); @@ -2878,11 +2744,11 @@ public class PacketCreator { } Collections.sort(medalQuests); - mplew.writeShort(medalQuests.size()); + p.writeShort(medalQuests.size()); for (Short s : medalQuests) { - mplew.writeShort(s); + p.writeShort(s); } - return mplew.getPacket(); + return p; } /** @@ -2896,27 +2762,26 @@ public class PacketCreator { * @return */ //1F 00 00 00 00 00 03 00 00 40 00 00 00 E0 00 00 00 00 00 00 00 00 E0 01 8E AA 4F 00 00 C2 EB 0B E0 01 8E AA 4F 00 00 C2 EB 0B 0C 00 8E AA 4F 00 00 C2 EB 0B 44 02 8E AA 4F 00 00 C2 EB 0B 44 02 8E AA 4F 00 00 C2 EB 0B 00 00 E0 7A 1D 00 8E AA 4F 00 00 00 00 00 00 00 00 03 - public static byte[] giveBuff(int buffid, int bufflength, List> statups) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); + public static Packet giveBuff(int buffid, int bufflength, List> statups) { + final OutPacket p = OutPacket.create(SendOpcode.GIVE_BUFF); boolean special = false; - writeLongMask(mplew, statups); + writeLongMask(p, statups); for (Pair statup : statups) { if (statup.getLeft().equals(MapleBuffStat.MONSTER_RIDING) || statup.getLeft().equals(MapleBuffStat.HOMING_BEACON)) { special = true; } - mplew.writeShort(statup.getRight().shortValue()); - mplew.writeInt(buffid); - mplew.writeInt(bufflength); + p.writeShort(statup.getRight().shortValue()); + p.writeInt(buffid); + p.writeInt(bufflength); } - mplew.writeInt(0); - mplew.write(0); - mplew.writeInt(statups.get(0).getRight()); //Homing beacon ... + p.writeInt(0); + p.writeByte(0); + p.writeInt(statups.get(0).getRight()); //Homing beacon ... if (special) { - mplew.skip(3); + p.skip(3); } - return mplew.getPacket(); + return p; } /** @@ -2925,44 +2790,42 @@ public class PacketCreator { * @param mount * @return */ - public static byte[] showMonsterRiding(int cid, MapleMount mount) { //Gtfo with this, this is just giveForeignBuff - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - mplew.writeLong(MapleBuffStat.MONSTER_RIDING.getValue()); - mplew.writeLong(0); - mplew.writeShort(0); - mplew.writeInt(mount.getItemId()); - mplew.writeInt(mount.getSkillId()); - mplew.writeInt(0); //Server Tick value. - mplew.writeShort(0); - mplew.write(0); //Times you have been buffed - return mplew.getPacket(); + public static Packet showMonsterRiding(int cid, MapleMount mount) { //Gtfo with this, this is just giveForeignBuff + final OutPacket p = OutPacket.create(SendOpcode.GIVE_FOREIGN_BUFF); + p.writeInt(cid); + p.writeLong(MapleBuffStat.MONSTER_RIDING.getValue()); + p.writeLong(0); + p.writeShort(0); + p.writeInt(mount.getItemId()); + p.writeInt(mount.getSkillId()); + p.writeInt(0); //Server Tick value. + p.writeShort(0); + p.writeByte(0); //Times you have been buffed + return p; } - /* mplew.writeInt(cid); + /* p.writeInt(cid); writeLongMask(mplew, statups); for (Pair statup : statups) { if (morph) { - mplew.writeInt(statup.getRight().intValue()); + p.writeInt(statup.getRight().intValue()); } else { - mplew.writeShort(statup.getRight().shortValue()); + p.writeShort(statup.getRight().shortValue()); } } - mplew.writeShort(0); - mplew.write(0);*/ + p.writeShort(0); + p.writeByte(0);*/ /** * @param c * @param quest * @return */ - public static byte[] forfeitQuest(short quest) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(1); - mplew.writeShort(quest); - mplew.write(0); - return mplew.getPacket(); + public static Packet forfeitQuest(short quest) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(1); + p.writeShort(quest); + p.writeByte(0); + return p; } /** @@ -2970,14 +2833,13 @@ public class PacketCreator { * @param quest * @return */ - public static byte[] completeQuest(short quest, long time) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(1); - mplew.writeShort(quest); - mplew.write(2); - mplew.writeLong(getTime(time)); - return mplew.getPacket(); + public static Packet completeQuest(short quest, long time) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(1); + p.writeShort(quest); + p.writeByte(2); + p.writeLong(getTime(time)); + return p; } /** @@ -2988,54 +2850,50 @@ public class PacketCreator { * @return */ - public static byte[] updateQuestInfo(short quest, int npc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); - mplew.write(8); //0x0A in v95 - mplew.writeShort(quest); - mplew.writeInt(npc); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet updateQuestInfo(short quest, int npc) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_QUEST_INFO); + p.writeByte(8); //0x0A in v95 + p.writeShort(quest); + p.writeInt(npc); + p.writeInt(0); + return p; } - public static byte[] addQuestTimeLimit(final short quest, final int time) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); - mplew.write(6); - mplew.writeShort(1);//Size but meh, when will there be 2 at the same time? And it won't even replace the old one :) - mplew.writeShort(quest); - mplew.writeInt(time); - return mplew.getPacket(); + public static Packet addQuestTimeLimit(final short quest, final int time) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_QUEST_INFO); + p.writeByte(6); + p.writeShort(1);//Size but meh, when will there be 2 at the same time? And it won't even replace the old one :) + p.writeShort(quest); + p.writeInt(time); + return p; } - public static byte[] removeQuestTimeLimit(final short quest) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); - mplew.write(7); - mplew.writeShort(1);//Position - mplew.writeShort(quest); - return mplew.getPacket(); + public static Packet removeQuestTimeLimit(final short quest) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_QUEST_INFO); + p.writeByte(7); + p.writeShort(1);//Position + p.writeShort(quest); + return p; } - public static byte[] updateQuest(MapleCharacter chr, MapleQuestStatus qs, boolean infoUpdate) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(1); + public static Packet updateQuest(MapleCharacter chr, MapleQuestStatus qs, boolean infoUpdate) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(1); if (infoUpdate) { MapleQuestStatus iqs = chr.getQuest(qs.getInfoNumber()); - mplew.writeShort(iqs.getQuestID()); - mplew.write(1); - mplew.writeMapleAsciiString(iqs.getProgressData()); + p.writeShort(iqs.getQuestID()); + p.writeByte(1); + p.writeString(iqs.getProgressData()); } else { - mplew.writeShort(qs.getQuest().getId()); - mplew.write(qs.getStatus().getId()); - mplew.writeMapleAsciiString(qs.getProgressData()); + p.writeShort(qs.getQuest().getId()); + p.writeByte(qs.getStatus().getId()); + p.writeString(qs.getProgressData()); } - mplew.skip(5); - return mplew.getPacket(); + p.skip(5); + return p; } - private static void writeLongMaskD(final MaplePacketLittleEndianWriter mplew, List> statups) { + private static void writeLongMaskD(final OutPacket p, List> statups) { long firstmask = 0; long secondmask = 0; for (Pair statup : statups) { @@ -3045,93 +2903,85 @@ public class PacketCreator { secondmask |= statup.getLeft().getValue(); } } - mplew.writeLong(firstmask); - mplew.writeLong(secondmask); + p.writeLong(firstmask); + p.writeLong(secondmask); } - public static byte[] giveDebuff(List> statups, MobSkill skill) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); - writeLongMaskD(mplew, statups); + public static Packet giveDebuff(List> statups, MobSkill skill) { + final OutPacket p = OutPacket.create(SendOpcode.GIVE_BUFF); + writeLongMaskD(p, statups); for (Pair statup : statups) { - mplew.writeShort(statup.getRight().shortValue()); - mplew.writeShort(skill.getSkillId()); - mplew.writeShort(skill.getSkillLevel()); - mplew.writeInt((int) skill.getDuration()); + p.writeShort(statup.getRight().shortValue()); + p.writeShort(skill.getSkillId()); + p.writeShort(skill.getSkillLevel()); + p.writeInt((int) skill.getDuration()); } - mplew.writeShort(0); // ??? wk charges have 600 here o.o - mplew.writeShort(900);//Delay - mplew.write(1); - return mplew.getPacket(); + p.writeShort(0); // ??? wk charges have 600 here o.o + p.writeShort(900);//Delay + p.writeByte(1); + return p; } - public static byte[] giveForeignDebuff(int cid, List> statups, MobSkill skill) { + public static Packet giveForeignDebuff(int chrId, List> statups, MobSkill skill) { // Poison damage visibility and missing diseases status visibility, extended through map transitions thanks to Ronan - - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMaskD(mplew, statups); + OutPacket p = OutPacket.create(SendOpcode.GIVE_FOREIGN_BUFF); + p.writeInt(chrId); + writeLongMaskD(p, statups); for (Pair statup : statups) { if (statup.getLeft() == MapleDisease.POISON) { - mplew.writeShort(statup.getRight().shortValue()); + p.writeShort(statup.getRight().shortValue()); } - mplew.writeShort(skill.getSkillId()); - mplew.writeShort(skill.getSkillLevel()); + p.writeShort(skill.getSkillId()); + p.writeShort(skill.getSkillLevel()); } - mplew.writeShort(0); // same as give_buff - mplew.writeShort(900);//Delay - return mplew.getPacket(); + p.writeShort(0); // same as give_buff + p.writeShort(900);//Delay + return p; } - public static byte[] cancelForeignFirstDebuff(int cid, long mask) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - mplew.writeLong(mask); - mplew.writeLong(0); - return mplew.getPacket(); + public static Packet cancelForeignFirstDebuff(int cid, long mask) { + final OutPacket p = OutPacket.create(SendOpcode.CANCEL_FOREIGN_BUFF); + p.writeInt(cid); + p.writeLong(mask); + p.writeLong(0); + return p; } - public static byte[] cancelForeignDebuff(int cid, long mask) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - mplew.writeLong(0); - mplew.writeLong(mask); - return mplew.getPacket(); + public static Packet cancelForeignDebuff(int cid, long mask) { + final OutPacket p = OutPacket.create(SendOpcode.CANCEL_FOREIGN_BUFF); + p.writeInt(cid); + p.writeLong(0); + p.writeLong(mask); + return p; } - public static byte[] giveForeignBuff(int cid, List> statups) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMask(mplew, statups); + public static Packet giveForeignBuff(int chrId, List> statups) { + OutPacket p = OutPacket.create(SendOpcode.GIVE_FOREIGN_BUFF); + p.writeInt(chrId); + writeLongMask(p, statups); for (Pair statup : statups) { - mplew.writeShort(statup.getRight().shortValue()); + p.writeShort(statup.getRight().shortValue()); } - mplew.writeInt(0); - mplew.writeShort(0); - return mplew.getPacket(); + p.writeInt(0); + p.writeShort(0); + return p; } - public static byte[] cancelForeignBuff(int cid, List statups) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMaskFromList(mplew, statups); - return mplew.getPacket(); + public static Packet cancelForeignBuff(int chrId, List statups) { + OutPacket p = OutPacket.create(SendOpcode.CANCEL_FOREIGN_BUFF); + p.writeInt(chrId); + writeLongMaskFromList(p, statups); + return p; } - public static byte[] cancelBuff(List statups) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_BUFF.getValue()); - writeLongMaskFromList(mplew, statups); - mplew.write(1);//? - return mplew.getPacket(); + public static Packet cancelBuff(List statups) { + OutPacket p = OutPacket.create(SendOpcode.CANCEL_BUFF); + writeLongMaskFromList(p, statups); + p.writeByte(1);//? + return p; } - private static void writeLongMask(final MaplePacketLittleEndianWriter mplew, List> statups) { + private static void writeLongMask(final OutPacket p, List> statups) { long firstmask = 0; long secondmask = 0; for (Pair statup : statups) { @@ -3141,11 +2991,11 @@ public class PacketCreator { secondmask |= statup.getLeft().getValue(); } } - mplew.writeLong(firstmask); - mplew.writeLong(secondmask); + p.writeLong(firstmask); + p.writeLong(secondmask); } - private static void writeLongMaskFromList(final MaplePacketLittleEndianWriter mplew, List statups) { + private static void writeLongMaskFromList(OutPacket p, List statups) { long firstmask = 0; long secondmask = 0; for (MapleBuffStat statup : statups) { @@ -3155,11 +3005,11 @@ public class PacketCreator { secondmask |= statup.getValue(); } } - mplew.writeLong(firstmask); - mplew.writeLong(secondmask); + p.writeLong(firstmask); + p.writeLong(secondmask); } - private static void writeLongEncodeTemporaryMask(final MaplePacketLittleEndianWriter mplew, Collection stati) { + private static void writeLongEncodeTemporaryMask(final OutPacket p, Collection stati) { int[] masks = new int[4]; for (MonsterStatus statup : stati) { @@ -3170,190 +3020,173 @@ public class PacketCreator { } for (int mask : masks) { - mplew.writeInt(mask); + p.writeInt(mask); } } - public static byte[] cancelDebuff(long mask) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(19); - mplew.writeShort(SendOpcode.CANCEL_BUFF.getValue()); - mplew.writeLong(0); - mplew.writeLong(mask); - mplew.write(0); - return mplew.getPacket(); + public static Packet cancelDebuff(long mask) { + OutPacket p = OutPacket.create(SendOpcode.CANCEL_BUFF); + p.writeLong(0); + p.writeLong(mask); + p.writeByte(0); + return p; } - private static void writeLongMaskSlowD(final MaplePacketLittleEndianWriter mplew) { - mplew.writeInt(0); - mplew.writeInt(2048); - mplew.writeLong(0); + private static void writeLongMaskSlowD(final OutPacket p) { + p.writeInt(0); + p.writeInt(2048); + p.writeLong(0); } - public static byte[] giveForeignSlowDebuff(int cid, List> statups, MobSkill skill) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMaskSlowD(mplew); + public static Packet giveForeignSlowDebuff(int chrId, List> statups, MobSkill skill) { + OutPacket p = OutPacket.create(SendOpcode.GIVE_FOREIGN_BUFF); + p.writeInt(chrId); + writeLongMaskSlowD(p); for (Pair statup : statups) { if (statup.getLeft() == MapleDisease.POISON) { - mplew.writeShort(statup.getRight().shortValue()); + p.writeShort(statup.getRight().shortValue()); } - mplew.writeShort(skill.getSkillId()); - mplew.writeShort(skill.getSkillLevel()); + p.writeShort(skill.getSkillId()); + p.writeShort(skill.getSkillLevel()); } - mplew.writeShort(0); // same as give_buff - mplew.writeShort(900);//Delay - return mplew.getPacket(); + p.writeShort(0); // same as give_buff + p.writeShort(900);//Delay + return p; } - public static byte[] cancelForeignSlowDebuff(int cid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMaskSlowD(mplew); - return mplew.getPacket(); + public static Packet cancelForeignSlowDebuff(int chrId) { + final OutPacket p = OutPacket.create(SendOpcode.CANCEL_FOREIGN_BUFF); + p.writeInt(chrId); + writeLongMaskSlowD(p); + return p; } - private static void writeLongMaskChair(final MaplePacketLittleEndianWriter mplew) { - mplew.writeInt(0); - mplew.writeInt(262144); - mplew.writeLong(0); + private static void writeLongMaskChair(OutPacket p) { + p.writeInt(0); + p.writeInt(262144); + p.writeLong(0); } - public static byte[] giveForeignChairSkillEffect(int cid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMaskChair(mplew); + public static Packet giveForeignChairSkillEffect(int cid) { + final OutPacket p = OutPacket.create(SendOpcode.GIVE_FOREIGN_BUFF); + p.writeInt(cid); + writeLongMaskChair(p); - mplew.writeShort(0); - mplew.writeShort(0); - mplew.writeShort(100); - mplew.writeShort(1); + p.writeShort(0); + p.writeShort(0); + p.writeShort(100); + p.writeShort(1); - mplew.writeShort(0); - mplew.writeShort(900); + p.writeShort(0); + p.writeShort(900); - mplew.skip(7); + p.skip(7); - return mplew.getPacket(); + return p; } // packet found thanks to Ronan - public static byte[] giveForeignWKChargeEffect(int cid, int buffid, List> statups) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(19); - mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMask(mplew, statups); - mplew.writeInt(buffid); - mplew.writeShort(600); - mplew.writeShort(1000);//Delay - mplew.write(1); - - return mplew.getPacket(); + public static Packet giveForeignWKChargeEffect(int cid, int buffid, List> statups) { + OutPacket p = OutPacket.create(SendOpcode.GIVE_FOREIGN_BUFF); + p.writeInt(cid); + writeLongMask(p, statups); + p.writeInt(buffid); + p.writeShort(600); + p.writeShort(1000);//Delay + p.writeByte(1); + return p; } - public static byte[] cancelForeignChairSkillEffect(int cid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(19); - mplew.writeShort(SendOpcode.CANCEL_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMaskChair(mplew); - - return mplew.getPacket(); + public static Packet cancelForeignChairSkillEffect(int chrId) { + OutPacket p = OutPacket.create(SendOpcode.CANCEL_FOREIGN_BUFF); + p.writeInt(chrId); + writeLongMaskChair(p); + return p; } - public static byte[] getPlayerShopChat(MapleCharacter chr, String chat, boolean owner) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); - mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); - mplew.write(owner ? 0 : 1); - mplew.writeMapleAsciiString(chr.getName() + " : " + chat); - return mplew.getPacket(); + public static Packet getPlayerShopChat(MapleCharacter chr, String chat, boolean owner) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.CHAT.getCode()); + p.writeByte(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + p.writeBool(!owner); + p.writeString(chr.getName() + " : " + chat); + return p; } - public static byte[] getPlayerShopNewVisitor(MapleCharacter chr, int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); - mplew.write(slot); - addCharLook(mplew, chr, false); - mplew.writeMapleAsciiString(chr.getName()); - return mplew.getPacket(); + public static Packet getPlayerShopNewVisitor(MapleCharacter chr, int slot) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.VISIT.getCode()); + p.writeByte(slot); + addCharLook(p, chr, false); + p.writeString(chr.getName()); + return p; } - public static byte[] getPlayerShopRemoveVisitor(int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + public static Packet getPlayerShopRemoveVisitor(int slot) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.EXIT.getCode()); if (slot != 0) { - mplew.writeShort(slot); + p.writeShort(slot); } - return mplew.getPacket(); + return p; } - public static byte[] getTradePartnerAdd(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); - mplew.write(1); - addCharLook(mplew, chr, false); - mplew.writeMapleAsciiString(chr.getName()); - return mplew.getPacket(); + public static Packet getTradePartnerAdd(MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.VISIT.getCode()); + p.writeByte(1); + addCharLook(p, chr, false); + p.writeString(chr.getName()); + return p; } - public static byte[] tradeInvite(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.INVITE.getCode()); - mplew.write(3); - mplew.writeMapleAsciiString(chr.getName()); - mplew.write(new byte[]{(byte) 0xB7, (byte) 0x50, 0, 0}); - return mplew.getPacket(); + public static Packet tradeInvite(MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.INVITE.getCode()); + p.writeByte(3); + p.writeString(chr.getName()); + p.writeBytes(new byte[]{(byte) 0xB7, (byte) 0x50, 0, 0}); + return p; } - public static byte[] getTradeMesoSet(byte number, int meso) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.SET_MESO.getCode()); - mplew.write(number); - mplew.writeInt(meso); - return mplew.getPacket(); + public static Packet getTradeMesoSet(byte number, int meso) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.SET_MESO.getCode()); + p.writeByte(number); + p.writeInt(meso); + return p; } - public static byte[] getTradeItemAdd(byte number, Item item) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.SET_ITEMS.getCode()); - mplew.write(number); - mplew.write(item.getPosition()); - addItemInfo(mplew, item, true); - return mplew.getPacket(); + public static Packet getTradeItemAdd(byte number, Item item) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.SET_ITEMS.getCode()); + p.writeByte(number); + p.writeByte(item.getPosition()); + addItemInfo(p, item, true); + return p; } - public static byte[] getPlayerShopItemUpdate(MaplePlayerShop shop) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode()); - mplew.write(shop.getItems().size()); + public static Packet getPlayerShopItemUpdate(MaplePlayerShop shop) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode()); + p.writeByte(shop.getItems().size()); for (MaplePlayerShopItem item : shop.getItems()) { - mplew.writeShort(item.getBundles()); - mplew.writeShort(item.getItem().getQuantity()); - mplew.writeInt(item.getPrice()); - addItemInfo(mplew, item.getItem(), true); + p.writeShort(item.getBundles()); + p.writeShort(item.getItem().getQuantity()); + p.writeInt(item.getPrice()); + addItemInfo(p, item.getItem(), true); } - return mplew.getPacket(); + return p; } - public static byte[] getPlayerShopOwnerUpdate(MaplePlayerShop.SoldItem item, int position) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.UPDATE_PLAYERSHOP.getCode()); - mplew.write(position); - mplew.writeShort(item.getQuantity()); - mplew.writeMapleAsciiString(item.getBuyer()); + public static Packet getPlayerShopOwnerUpdate(MaplePlayerShop.SoldItem item, int position) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.UPDATE_PLAYERSHOP.getCode()); + p.writeByte(position); + p.writeShort(item.getQuantity()); + p.writeString(item.getBuyer()); - return mplew.getPacket(); + return p; } /** @@ -3362,77 +3195,74 @@ public class PacketCreator { * @param owner * @return */ - public static byte[] getPlayerShop(MaplePlayerShop shop, boolean owner) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); - mplew.write(4); - mplew.write(4); - mplew.write(owner ? 0 : 1); + public static Packet getPlayerShop(MaplePlayerShop shop, boolean owner) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode()); + p.writeByte(4); + p.writeByte(4); + p.writeByte(owner ? 0 : 1); if (owner) { List sold = shop.getSold(); - mplew.write(sold.size()); + p.writeByte(sold.size()); for (MaplePlayerShop.SoldItem s : sold) { - mplew.writeInt(s.getItemId()); - mplew.writeShort(s.getQuantity()); - mplew.writeInt(s.getMesos()); - mplew.writeMapleAsciiString(s.getBuyer()); + p.writeInt(s.getItemId()); + p.writeShort(s.getQuantity()); + p.writeInt(s.getMesos()); + p.writeString(s.getBuyer()); } } else { - mplew.write(0); + p.writeByte(0); } - addCharLook(mplew, shop.getOwner(), false); - mplew.writeMapleAsciiString(shop.getOwner().getName()); + addCharLook(p, shop.getOwner(), false); + p.writeString(shop.getOwner().getName()); MapleCharacter[] visitors = shop.getVisitors(); for (int i = 0; i < 3; i++) { if (visitors[i] != null) { - mplew.write(i + 1); - addCharLook(mplew, visitors[i], false); - mplew.writeMapleAsciiString(visitors[i].getName()); + p.writeByte(i + 1); + addCharLook(p, visitors[i], false); + p.writeString(visitors[i].getName()); } } - mplew.write(0xFF); - mplew.writeMapleAsciiString(shop.getDescription()); + p.writeByte(0xFF); + p.writeString(shop.getDescription()); List items = shop.getItems(); - mplew.write(0x10); //TODO SLOTS, which is 16 for most stores...slotMax - mplew.write(items.size()); + p.writeByte(0x10); //TODO SLOTS, which is 16 for most stores...slotMax + p.writeByte(items.size()); for (MaplePlayerShopItem item : items) { - mplew.writeShort(item.getBundles()); - mplew.writeShort(item.getItem().getQuantity()); - mplew.writeInt(item.getPrice()); - addItemInfo(mplew, item.getItem(), true); + p.writeShort(item.getBundles()); + p.writeShort(item.getItem().getQuantity()); + p.writeInt(item.getPrice()); + addItemInfo(p, item.getItem(), true); } - return mplew.getPacket(); + return p; } - public static byte[] getTradeStart(MapleClient c, MapleTrade trade, byte number) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); - mplew.write(3); - mplew.write(2); - mplew.write(number); + public static Packet getTradeStart(MapleClient c, MapleTrade trade, byte number) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode()); + p.writeByte(3); + p.writeByte(2); + p.writeByte(number); if (number == 1) { - mplew.write(0); - addCharLook(mplew, trade.getPartner().getChr(), false); - mplew.writeMapleAsciiString(trade.getPartner().getChr().getName()); + p.writeByte(0); + addCharLook(p, trade.getPartner().getChr(), false); + p.writeString(trade.getPartner().getChr().getName()); } - mplew.write(number); - addCharLook(mplew, c.getPlayer(), false); - mplew.writeMapleAsciiString(c.getPlayer().getName()); - mplew.write(0xFF); - return mplew.getPacket(); + p.writeByte(number); + addCharLook(p, c.getPlayer(), false); + p.writeString(c.getPlayer().getName()); + p.writeByte(0xFF); + return p; } - public static byte[] getTradeConfirmation() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.CONFIRM.getCode()); - return mplew.getPacket(); + public static Packet getTradeConfirmation() { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.CONFIRM.getCode()); + return p; } /** @@ -3445,13 +3275,12 @@ public class PacketCreator { * @param operation * @return */ - public static byte[] getTradeResult(byte number, byte operation) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); - mplew.write(number); - mplew.write(operation); - return mplew.getPacket(); + public static Packet getTradeResult(byte number, byte operation) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.EXIT.getCode()); + p.writeByte(number); + p.writeByte(operation); + return p; } /** @@ -3466,259 +3295,238 @@ public class PacketCreator { * @param speaker * @return */ - public static byte[] getNPCTalk(int npc, byte msgType, String talk, String endBytes, byte speaker) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NPC_TALK.getValue()); - mplew.write(4); // ? - mplew.writeInt(npc); - mplew.write(msgType); - mplew.write(speaker); - mplew.writeMapleAsciiString(talk); - mplew.write(HexTool.getByteArrayFromHexString(endBytes)); - return mplew.getPacket(); + public static Packet getNPCTalk(int npc, byte msgType, String talk, String endBytes, byte speaker) { + final OutPacket p = OutPacket.create(SendOpcode.NPC_TALK); + p.writeByte(4); // ? + p.writeInt(npc); + p.writeByte(msgType); + p.writeByte(speaker); + p.writeString(talk); + p.writeBytes(HexTool.getByteArrayFromHexString(endBytes)); + return p; } - public static byte[] getDimensionalMirror(String talk) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NPC_TALK.getValue()); - mplew.write(4); // ? - mplew.writeInt(9010022); - mplew.write(0x0E); - mplew.write(0); - mplew.writeInt(0); - mplew.writeMapleAsciiString(talk); - return mplew.getPacket(); + public static Packet getDimensionalMirror(String talk) { + final OutPacket p = OutPacket.create(SendOpcode.NPC_TALK); + p.writeByte(4); // ? + p.writeInt(9010022); + p.writeByte(0x0E); + p.writeByte(0); + p.writeInt(0); + p.writeString(talk); + return p; } - public static byte[] getNPCTalkStyle(int npc, String talk, int[] styles) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NPC_TALK.getValue()); - mplew.write(4); // ? - mplew.writeInt(npc); - mplew.write(7); - mplew.write(0); //speaker - mplew.writeMapleAsciiString(talk); - mplew.write(styles.length); + public static Packet getNPCTalkStyle(int npc, String talk, int[] styles) { + final OutPacket p = OutPacket.create(SendOpcode.NPC_TALK); + p.writeByte(4); // ? + p.writeInt(npc); + p.writeByte(7); + p.writeByte(0); //speaker + p.writeString(talk); + p.writeByte(styles.length); for (int style : styles) { - mplew.writeInt(style); + p.writeInt(style); } - return mplew.getPacket(); + return p; } - public static byte[] getNPCTalkNum(int npc, String talk, int def, int min, int max) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NPC_TALK.getValue()); - mplew.write(4); // ? - mplew.writeInt(npc); - mplew.write(3); - mplew.write(0); //speaker - mplew.writeMapleAsciiString(talk); - mplew.writeInt(def); - mplew.writeInt(min); - mplew.writeInt(max); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet getNPCTalkNum(int npc, String talk, int def, int min, int max) { + final OutPacket p = OutPacket.create(SendOpcode.NPC_TALK); + p.writeByte(4); // ? + p.writeInt(npc); + p.writeByte(3); + p.writeByte(0); //speaker + p.writeString(talk); + p.writeInt(def); + p.writeInt(min); + p.writeInt(max); + p.writeInt(0); + return p; } - public static byte[] getNPCTalkText(int npc, String talk, String def) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NPC_TALK.getValue()); - mplew.write(4); // Doesn't matter - mplew.writeInt(npc); - mplew.write(2); - mplew.write(0); //speaker - mplew.writeMapleAsciiString(talk); - mplew.writeMapleAsciiString(def);//:D - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet getNPCTalkText(int npc, String talk, String def) { + final OutPacket p = OutPacket.create(SendOpcode.NPC_TALK); + p.writeByte(4); // Doesn't matter + p.writeInt(npc); + p.writeByte(2); + p.writeByte(0); //speaker + p.writeString(talk); + p.writeString(def);//:D + p.writeInt(0); + return p; } // NPC Quiz packets thanks to Eric - public static byte[] OnAskQuiz(int nSpeakerTypeID, int nSpeakerTemplateID, int nResCode, String sTitle, String sProblemText, String sHintText, int nMinInput, int nMaxInput, int tRemainInitialQuiz) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NPC_TALK.getValue()); - mplew.write(nSpeakerTypeID); - mplew.writeInt(nSpeakerTemplateID); - mplew.write(0x6); - mplew.write(0); - mplew.write(nResCode); + public static Packet OnAskQuiz(int nSpeakerTypeID, int nSpeakerTemplateID, int nResCode, String sTitle, String sProblemText, String sHintText, int nMinInput, int nMaxInput, int tRemainInitialQuiz) { + OutPacket p = OutPacket.create(SendOpcode.NPC_TALK); + p.writeByte(nSpeakerTypeID); + p.writeInt(nSpeakerTemplateID); + p.writeByte(0x6); + p.writeByte(0); + p.writeByte(nResCode); if (nResCode == 0x0) {//fail has no bytes <3 - mplew.writeMapleAsciiString(sTitle); - mplew.writeMapleAsciiString(sProblemText); - mplew.writeMapleAsciiString(sHintText); - mplew.writeShort(nMinInput); - mplew.writeShort(nMaxInput); - mplew.writeInt(tRemainInitialQuiz); + p.writeString(sTitle); + p.writeString(sProblemText); + p.writeString(sHintText); + p.writeShort(nMinInput); + p.writeShort(nMaxInput); + p.writeInt(tRemainInitialQuiz); } - return mplew.getPacket(); + return p; } - public static byte[] OnAskSpeedQuiz(int nSpeakerTypeID, int nSpeakerTemplateID, int nResCode, int nType, int dwAnswer, int nCorrect, int nRemain, int tRemainInitialQuiz) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NPC_TALK.getValue()); - mplew.write(nSpeakerTypeID); - mplew.writeInt(nSpeakerTemplateID); - mplew.write(0x7); - mplew.write(0); - mplew.write(nResCode); + public static Packet OnAskSpeedQuiz(int nSpeakerTypeID, int nSpeakerTemplateID, int nResCode, int nType, int dwAnswer, int nCorrect, int nRemain, int tRemainInitialQuiz) { + OutPacket p = OutPacket.create(SendOpcode.NPC_TALK); + p.writeByte(nSpeakerTypeID); + p.writeInt(nSpeakerTemplateID); + p.writeByte(0x7); + p.writeByte(0); + p.writeByte(nResCode); if (nResCode == 0x0) {//fail has no bytes <3 - mplew.writeInt(nType); - mplew.writeInt(dwAnswer); - mplew.writeInt(nCorrect); - mplew.writeInt(nRemain); - mplew.writeInt(tRemainInitialQuiz); + p.writeInt(nType); + p.writeInt(dwAnswer); + p.writeInt(nCorrect); + p.writeInt(nRemain); + p.writeInt(tRemainInitialQuiz); } - return mplew.getPacket(); + return p; } - public static byte[] showBuffeffect(int cid, int skillid, int effectid) { - return showBuffeffect(cid, skillid, effectid, (byte) 3); + public static Packet showBuffEffect(int chrId, int skillId, int effectId) { + return showBuffEffect(chrId, skillId, effectId, (byte) 3); } - public static byte[] showBuffeffect(int cid, int skillid, int effectid, byte direction) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(effectid); //buff level - mplew.writeInt(skillid); - mplew.write(direction); - mplew.write(1); - mplew.writeLong(0); - return mplew.getPacket(); + public static Packet showBuffEffect(int chrId, int skillId, int effectId, byte direction) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(chrId); + p.writeByte(effectId); //buff level + p.writeInt(skillId); + p.writeByte(direction); + p.writeByte(1); + p.writeLong(0); + return p; } - public static byte[] showBuffeffect(int cid, int skillid, int skilllv, int effectid, byte direction) { // updated packet structure found thanks to Rien dev team - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(effectid); - mplew.writeInt(skillid); - mplew.write(0); - mplew.write(skilllv); - mplew.write(direction); - - return mplew.getPacket(); + public static Packet showBuffEffect(int chrId, int skillId, int skillLv, int effectId, byte direction) { // updated packet structure found thanks to Rien dev team + OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(chrId); + p.writeByte(effectId); + p.writeInt(skillId); + p.writeByte(0); + p.writeByte(skillLv); + p.writeByte(direction); + return p; } - public static byte[] showOwnBuffEffect(int skillid, int effectid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(effectid); - mplew.writeInt(skillid); - mplew.write(0xA9); - mplew.write(1); - return mplew.getPacket(); + public static Packet showOwnBuffEffect(int skillId, int effectId) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(effectId); + p.writeInt(skillId); + p.writeByte(0xA9); + p.writeByte(1); + return p; } - public static byte[] showOwnBerserk(int skilllevel, boolean Berserk) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(1); - mplew.writeInt(1320006); - mplew.write(0xA9); - mplew.write(skilllevel); - mplew.write(Berserk ? 1 : 0); - return mplew.getPacket(); + public static Packet showOwnBerserk(int skilllevel, boolean Berserk) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(1); + p.writeInt(1320006); + p.writeByte(0xA9); + p.writeByte(skilllevel); + p.writeByte(Berserk ? 1 : 0); + return p; } - public static byte[] showBerserk(int cid, int skilllevel, boolean Berserk) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(1); - mplew.writeInt(1320006); - mplew.write(0xA9); - mplew.write(skilllevel); - mplew.write(Berserk ? 1 : 0); - return mplew.getPacket(); + public static Packet showBerserk(int chrId, int skillLv, boolean berserk) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(chrId); + p.writeByte(1); + p.writeInt(1320006); + p.writeByte(0xA9); + p.writeByte(skillLv); + p.writeBool(berserk); + return p; } - public static byte[] updateSkill(int skillid, int level, int masterlevel, long expiration) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_SKILLS.getValue()); - mplew.write(1); - mplew.writeShort(1); - mplew.writeInt(skillid); - mplew.writeInt(level); - mplew.writeInt(masterlevel); - addExpirationTime(mplew, expiration); - mplew.write(4); - return mplew.getPacket(); + public static Packet updateSkill(int skillId, int level, int masterlevel, long expiration) { + OutPacket p = OutPacket.create(SendOpcode.UPDATE_SKILLS); + p.writeByte(1); + p.writeShort(1); + p.writeInt(skillId); + p.writeInt(level); + p.writeInt(masterlevel); + addExpirationTime(p, expiration); + p.writeByte(4); + return p; } - public static byte[] getShowQuestCompletion(int id) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.QUEST_CLEAR.getValue()); - mplew.writeShort(id); - return mplew.getPacket(); + public static Packet getShowQuestCompletion(int id) { + final OutPacket p = OutPacket.create(SendOpcode.QUEST_CLEAR); + p.writeShort(id); + return p; } - public static byte[] getKeymap(Map keybindings) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.KEYMAP.getValue()); - mplew.write(0); + public static Packet getKeymap(Map keybindings) { + final OutPacket p = OutPacket.create(SendOpcode.KEYMAP); + p.writeByte(0); for (int x = 0; x < 90; x++) { MapleKeyBinding binding = keybindings.get(x); if (binding != null) { - mplew.write(binding.getType()); - mplew.writeInt(binding.getAction()); + p.writeByte(binding.getType()); + p.writeInt(binding.getAction()); } else { - mplew.write(0); - mplew.writeInt(0); + p.writeByte(0); + p.writeInt(0); } } - return mplew.getPacket(); + return p; } - public static byte[] QuickslotMappedInit(MapleQuickslotBinding pQuickslot) { - final MaplePacketLittleEndianWriter pOutPacket = new MaplePacketLittleEndianWriter(); - - pOutPacket.writeShort(SendOpcode.QUICKSLOT_INIT.getValue()); - pQuickslot.Encode(pOutPacket); - - return pOutPacket.getPacket(); + public static Packet QuickslotMappedInit(MapleQuickslotBinding pQuickslot) { + OutPacket p = OutPacket.create(SendOpcode.QUICKSLOT_INIT); + pQuickslot.encode(p); + return p; } - public static byte[] getInventoryFull() { + public static Packet getInventoryFull() { return modifyInventory(true, Collections.emptyList()); } - public static byte[] getShowInventoryFull() { + public static Packet getShowInventoryFull() { return getShowInventoryStatus(0xff); } - public static byte[] showItemUnavailable() { + public static Packet showItemUnavailable() { return getShowInventoryStatus(0xfe); } - public static byte[] getShowInventoryStatus(int mode) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(0); - mplew.write(mode); - mplew.writeInt(0); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet getShowInventoryStatus(int mode) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(0); + p.writeByte(mode); + p.writeInt(0); + p.writeInt(0); + return p; } - public static byte[] getStorage(int npcId, byte slots, Collection items, int meso) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STORAGE.getValue()); - mplew.write(0x16); - mplew.writeInt(npcId); - mplew.write(slots); - mplew.writeShort(0x7E); - mplew.writeShort(0); - mplew.writeInt(0); - mplew.writeInt(meso); - mplew.writeShort(0); - mplew.write((byte) items.size()); + public static Packet getStorage(int npcId, byte slots, Collection items, int meso) { + final OutPacket p = OutPacket.create(SendOpcode.STORAGE); + p.writeByte(0x16); + p.writeInt(npcId); + p.writeByte(slots); + p.writeShort(0x7E); + p.writeShort(0); + p.writeInt(0); + p.writeInt(meso); + p.writeShort(0); + p.writeByte((byte) items.size()); for (Item item : items) { - addItemInfo(mplew, item, true); + addItemInfo(p, item, true); } - mplew.writeShort(0); - mplew.write(0); - return mplew.getPacket(); + p.writeShort(0); + p.writeByte(0); + return p; } /* @@ -3726,69 +3534,63 @@ public class PacketCreator { * 0x0B = You do not have enough mesos * 0x0C = One-Of-A-Kind error */ - public static byte[] getStorageError(byte i) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STORAGE.getValue()); - mplew.write(i); - return mplew.getPacket(); + public static Packet getStorageError(byte i) { + final OutPacket p = OutPacket.create(SendOpcode.STORAGE); + p.writeByte(i); + return p; } - public static byte[] mesoStorage(byte slots, int meso) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STORAGE.getValue()); - mplew.write(0x13); - mplew.write(slots); - mplew.writeShort(2); - mplew.writeShort(0); - mplew.writeInt(0); - mplew.writeInt(meso); - return mplew.getPacket(); + public static Packet mesoStorage(byte slots, int meso) { + final OutPacket p = OutPacket.create(SendOpcode.STORAGE); + p.writeByte(0x13); + p.writeByte(slots); + p.writeShort(2); + p.writeShort(0); + p.writeInt(0); + p.writeInt(meso); + return p; } - public static byte[] storeStorage(byte slots, MapleInventoryType type, Collection items) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STORAGE.getValue()); - mplew.write(0xD); - mplew.write(slots); - mplew.writeShort(type.getBitfieldEncoding()); - mplew.writeShort(0); - mplew.writeInt(0); - mplew.write(items.size()); + public static Packet storeStorage(byte slots, MapleInventoryType type, Collection items) { + final OutPacket p = OutPacket.create(SendOpcode.STORAGE); + p.writeByte(0xD); + p.writeByte(slots); + p.writeShort(type.getBitfieldEncoding()); + p.writeShort(0); + p.writeInt(0); + p.writeByte(items.size()); for (Item item : items) { - addItemInfo(mplew, item, true); + addItemInfo(p, item, true); } - return mplew.getPacket(); + return p; } - public static byte[] takeOutStorage(byte slots, MapleInventoryType type, Collection items) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STORAGE.getValue()); - mplew.write(0x9); - mplew.write(slots); - mplew.writeShort(type.getBitfieldEncoding()); - mplew.writeShort(0); - mplew.writeInt(0); - mplew.write(items.size()); + public static Packet takeOutStorage(byte slots, MapleInventoryType type, Collection items) { + final OutPacket p = OutPacket.create(SendOpcode.STORAGE); + p.writeByte(0x9); + p.writeByte(slots); + p.writeShort(type.getBitfieldEncoding()); + p.writeShort(0); + p.writeInt(0); + p.writeByte(items.size()); for (Item item : items) { - addItemInfo(mplew, item, true); + addItemInfo(p, item, true); } - return mplew.getPacket(); + return p; } - public static byte[] arrangeStorage(byte slots, Collection items) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - - mplew.writeShort(SendOpcode.STORAGE.getValue()); - mplew.write(0xF); - mplew.write(slots); - mplew.write(124); - mplew.skip(10); - mplew.write(items.size()); + public static Packet arrangeStorage(byte slots, Collection items) { + OutPacket p = OutPacket.create(SendOpcode.STORAGE); + p.writeByte(0xF); + p.writeByte(slots); + p.writeByte(124); + p.skip(10); + p.writeByte(items.size()); for (Item item : items) { - addItemInfo(mplew, item, true); + addItemInfo(p, item, true); } - mplew.write(0); - return mplew.getPacket(); + p.writeByte(0); + return p; } /** @@ -3796,24 +3598,22 @@ public class PacketCreator { * @param remhppercentage * @return */ - public static byte[] showMonsterHP(int oid, int remhppercentage) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_MONSTER_HP.getValue()); - mplew.writeInt(oid); - mplew.write(remhppercentage); - return mplew.getPacket(); + public static Packet showMonsterHP(int oid, int remhppercentage) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_MONSTER_HP); + p.writeInt(oid); + p.writeByte(remhppercentage); + return p; } - public static byte[] showBossHP(int oid, int currHP, int maxHP, byte tagColor, byte tagBgColor) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); - mplew.write(5); - mplew.writeInt(oid); - mplew.writeInt(currHP); - mplew.writeInt(maxHP); - mplew.write(tagColor); - mplew.write(tagBgColor); - return mplew.getPacket(); + public static Packet showBossHP(int oid, int currHP, int maxHP, byte tagColor, byte tagBgColor) { + final OutPacket p = OutPacket.create(SendOpcode.FIELD_EFFECT); + p.writeByte(5); + p.writeInt(oid); + p.writeInt(currHP); + p.writeInt(maxHP); + p.writeByte(tagColor); + p.writeByte(tagBgColor); + return p; } private static Pair normalizedCustomMaxHP(long currHP, long maxHP) { @@ -3832,29 +3632,27 @@ public class PacketCreator { return new Pair<>(sendHP, sendMaxHP); } - public static byte[] customShowBossHP(byte call, int oid, long currHP, long maxHP, byte tagColor, byte tagBgColor) { + public static Packet customShowBossHP(byte call, int oid, long currHP, long maxHP, byte tagColor, byte tagBgColor) { Pair customHP = normalizedCustomMaxHP(currHP, maxHP); - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); - mplew.write(call); - mplew.writeInt(oid); - mplew.writeInt(customHP.left); - mplew.writeInt(customHP.right); - mplew.write(tagColor); - mplew.write(tagBgColor); - return mplew.getPacket(); + final OutPacket p = OutPacket.create(SendOpcode.FIELD_EFFECT); + p.writeByte(call); + p.writeInt(oid); + p.writeInt(customHP.left); + p.writeInt(customHP.right); + p.writeByte(tagColor); + p.writeByte(tagBgColor); + return p; } - public static byte[] giveFameResponse(int mode, String charname, int newfame) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAME_RESPONSE.getValue()); - mplew.write(0); - mplew.writeMapleAsciiString(charname); - mplew.write(mode); - mplew.writeShort(newfame); - mplew.writeShort(0); - return mplew.getPacket(); + public static Packet giveFameResponse(int mode, String charname, int newfame) { + final OutPacket p = OutPacket.create(SendOpcode.FAME_RESPONSE); + p.writeByte(0); + p.writeString(charname); + p.writeByte(mode); + p.writeShort(newfame); + p.writeShort(0); + return p; } /** @@ -3868,27 +3666,24 @@ public class PacketCreator { * @param status * @return */ - public static byte[] giveFameErrorResponse(int status) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAME_RESPONSE.getValue()); - mplew.write(status); - return mplew.getPacket(); + public static Packet giveFameErrorResponse(int status) { + final OutPacket p = OutPacket.create(SendOpcode.FAME_RESPONSE); + p.writeByte(status); + return p; } - public static byte[] receiveFame(int mode, String charnameFrom) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAME_RESPONSE.getValue()); - mplew.write(5); - mplew.writeMapleAsciiString(charnameFrom); - mplew.write(mode); - return mplew.getPacket(); + public static Packet receiveFame(int mode, String charnameFrom) { + final OutPacket p = OutPacket.create(SendOpcode.FAME_RESPONSE); + p.writeByte(5); + p.writeString(charnameFrom); + p.writeByte(mode); + return p; } - public static byte[] partyCreated(MapleParty party, int partycharid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); - mplew.write(8); - mplew.writeInt(party.getId()); + public static Packet partyCreated(MapleParty party, int partycharid) { + final OutPacket p = OutPacket.create(SendOpcode.PARTY_OPERATION); + p.writeByte(8); + p.writeInt(party.getId()); Map partyDoors = party.getDoors(); if (partyDoors.size() > 0) { @@ -3896,43 +3691,41 @@ public class PacketCreator { if (door != null) { MapleDoorObject mdo = door.getAreaDoor(); - mplew.writeInt(mdo.getTo().getId()); - mplew.writeInt(mdo.getFrom().getId()); - mplew.writeInt(mdo.getPosition().x); - mplew.writeInt(mdo.getPosition().y); + p.writeInt(mdo.getTo().getId()); + p.writeInt(mdo.getFrom().getId()); + p.writeInt(mdo.getPosition().x); + p.writeInt(mdo.getPosition().y); } else { - mplew.writeInt(999999999); - mplew.writeInt(999999999); - mplew.writeInt(0); - mplew.writeInt(0); + p.writeInt(999999999); + p.writeInt(999999999); + p.writeInt(0); + p.writeInt(0); } } else { - mplew.writeInt(999999999); - mplew.writeInt(999999999); - mplew.writeInt(0); - mplew.writeInt(0); + p.writeInt(999999999); + p.writeInt(999999999); + p.writeInt(0); + p.writeInt(0); } - return mplew.getPacket(); + return p; } - public static byte[] partyInvite(MapleCharacter from) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); - mplew.write(4); - mplew.writeInt(from.getParty().getId()); - mplew.writeMapleAsciiString(from.getName()); - mplew.write(0); - return mplew.getPacket(); + public static Packet partyInvite(MapleCharacter from) { + final OutPacket p = OutPacket.create(SendOpcode.PARTY_OPERATION); + p.writeByte(4); + p.writeInt(from.getParty().getId()); + p.writeString(from.getName()); + p.writeByte(0); + return p; } - public static byte[] partySearchInvite(MapleCharacter from) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); - mplew.write(4); - mplew.writeInt(from.getParty().getId()); - mplew.writeMapleAsciiString("PS: " + from.getName()); - mplew.write(0); - return mplew.getPacket(); + public static Packet partySearchInvite(MapleCharacter from) { + final OutPacket p = OutPacket.create(SendOpcode.PARTY_OPERATION); + p.writeByte(4); + p.writeInt(from.getParty().getId()); + p.writeString("PS: " + from.getName()); + p.writeByte(0); + return p; } /** @@ -3948,11 +3741,10 @@ public class PacketCreator { * @param message * @return */ - public static byte[] partyStatusMessage(int message) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); - mplew.write(message); - return mplew.getPacket(); + public static Packet partyStatusMessage(int message) { + final OutPacket p = OutPacket.create(SendOpcode.PARTY_OPERATION); + p.writeByte(message); + return p; } /** @@ -3963,44 +3755,43 @@ public class PacketCreator { * @param charname * @return */ - public static byte[] partyStatusMessage(int message, String charname) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); - mplew.write(message); - mplew.writeMapleAsciiString(charname); - return mplew.getPacket(); + public static Packet partyStatusMessage(int message, String charname) { + final OutPacket p = OutPacket.create(SendOpcode.PARTY_OPERATION); + p.writeByte(message); + p.writeString(charname); + return p; } - private static void addPartyStatus(int forchannel, MapleParty party, LittleEndianWriter lew, boolean leaving) { + private static void addPartyStatus(int forchannel, MapleParty party, OutPacket p, boolean leaving) { List partymembers = new ArrayList<>(party.getMembers()); while (partymembers.size() < 6) { partymembers.add(new MaplePartyCharacter()); } for (MaplePartyCharacter partychar : partymembers) { - lew.writeInt(partychar.getId()); + p.writeInt(partychar.getId()); } for (MaplePartyCharacter partychar : partymembers) { - lew.writeAsciiString(getRightPaddedStr(partychar.getName(), '\0', 13)); + p.writeFixedString(getRightPaddedStr(partychar.getName(), '\0', 13)); } for (MaplePartyCharacter partychar : partymembers) { - lew.writeInt(partychar.getJobId()); + p.writeInt(partychar.getJobId()); } for (MaplePartyCharacter partychar : partymembers) { - lew.writeInt(partychar.getLevel()); + p.writeInt(partychar.getLevel()); } for (MaplePartyCharacter partychar : partymembers) { if (partychar.isOnline()) { - lew.writeInt(partychar.getChannel() - 1); + p.writeInt(partychar.getChannel() - 1); } else { - lew.writeInt(-2); + p.writeInt(-2); } } - lew.writeInt(party.getLeader().getId()); + p.writeInt(party.getLeader().getId()); for (MaplePartyCharacter partychar : partymembers) { if (partychar.getChannel() == forchannel) { - lew.writeInt(partychar.getMapId()); + p.writeInt(partychar.getMapId()); } else { - lew.writeInt(0); + p.writeInt(0); } } @@ -4011,93 +3802,90 @@ public class PacketCreator { MapleDoor door = partyDoors.get(partychar.getId()); if (door != null) { MapleDoorObject mdo = door.getTownDoor(); - lew.writeInt(mdo.getTown().getId()); - lew.writeInt(mdo.getArea().getId()); - lew.writeInt(mdo.getPosition().x); - lew.writeInt(mdo.getPosition().y); + p.writeInt(mdo.getTown().getId()); + p.writeInt(mdo.getArea().getId()); + p.writeInt(mdo.getPosition().x); + p.writeInt(mdo.getPosition().y); } else { - lew.writeInt(999999999); - lew.writeInt(999999999); - lew.writeInt(0); - lew.writeInt(0); + p.writeInt(999999999); + p.writeInt(999999999); + p.writeInt(0); + p.writeInt(0); } } else { - lew.writeInt(999999999); - lew.writeInt(999999999); - lew.writeInt(0); - lew.writeInt(0); + p.writeInt(999999999); + p.writeInt(999999999); + p.writeInt(0); + p.writeInt(0); } } else { - lew.writeInt(999999999); - lew.writeInt(999999999); - lew.writeInt(0); - lew.writeInt(0); + p.writeInt(999999999); + p.writeInt(999999999); + p.writeInt(0); + p.writeInt(0); } } } - public static byte[] updateParty(int forChannel, MapleParty party, PartyOperation op, MaplePartyCharacter target) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); + public static Packet updateParty(int forChannel, MapleParty party, PartyOperation op, MaplePartyCharacter target) { + final OutPacket p = OutPacket.create(SendOpcode.PARTY_OPERATION); switch (op) { case DISBAND: case EXPEL: case LEAVE: - mplew.write(0x0C); - mplew.writeInt(party.getId()); - mplew.writeInt(target.getId()); + p.writeByte(0x0C); + p.writeInt(party.getId()); + p.writeInt(target.getId()); if (op == PartyOperation.DISBAND) { - mplew.write(0); - mplew.writeInt(party.getId()); + p.writeByte(0); + p.writeInt(party.getId()); } else { - mplew.write(1); + p.writeByte(1); if (op == PartyOperation.EXPEL) { - mplew.write(1); + p.writeByte(1); } else { - mplew.write(0); + p.writeByte(0); } - mplew.writeMapleAsciiString(target.getName()); - addPartyStatus(forChannel, party, mplew, false); + p.writeString(target.getName()); + addPartyStatus(forChannel, party, p, false); } break; case JOIN: - mplew.write(0xF); - mplew.writeInt(party.getId()); - mplew.writeMapleAsciiString(target.getName()); - addPartyStatus(forChannel, party, mplew, false); + p.writeByte(0xF); + p.writeInt(party.getId()); + p.writeString(target.getName()); + addPartyStatus(forChannel, party, p, false); break; case SILENT_UPDATE: case LOG_ONOFF: - mplew.write(0x7); - mplew.writeInt(party.getId()); - addPartyStatus(forChannel, party, mplew, false); + p.writeByte(0x7); + p.writeInt(party.getId()); + addPartyStatus(forChannel, party, p, false); break; case CHANGE_LEADER: - mplew.write(0x1B); - mplew.writeInt(target.getId()); - mplew.write(0); + p.writeByte(0x1B); + p.writeInt(target.getId()); + p.writeByte(0); break; } - return mplew.getPacket(); + return p; } - public static byte[] partyPortal(int townId, int targetId, Point position) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); - mplew.writeShort(0x23); - mplew.writeInt(townId); - mplew.writeInt(targetId); - mplew.writePos(position); - return mplew.getPacket(); + public static Packet partyPortal(int townId, int targetId, Point position) { + final OutPacket p = OutPacket.create(SendOpcode.PARTY_OPERATION); + p.writeShort(0x23); + p.writeInt(townId); + p.writeInt(targetId); + p.writePos(position); + return p; } - public static byte[] updatePartyMemberHP(int cid, int curhp, int maxhp) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_PARTYMEMBER_HP.getValue()); - mplew.writeInt(cid); - mplew.writeInt(curhp); - mplew.writeInt(maxhp); - return mplew.getPacket(); + public static Packet updatePartyMemberHP(int cid, int curhp, int maxhp) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_PARTYMEMBER_HP); + p.writeInt(cid); + p.writeInt(curhp); + p.writeInt(maxhp); + return p; } /** @@ -4108,16 +3896,15 @@ public class PacketCreator { * @param mode * @return */ - public static byte[] multiChat(String name, String chattext, int mode) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MULTICHAT.getValue()); - mplew.write(mode); - mplew.writeMapleAsciiString(name); - mplew.writeMapleAsciiString(chattext); - return mplew.getPacket(); + public static Packet multiChat(String name, String chattext, int mode) { + OutPacket p = OutPacket.create(SendOpcode.MULTICHAT); + p.writeByte(mode); + p.writeString(name); + p.writeString(chattext); + return p; } - private static void writeIntMask(final MaplePacketLittleEndianWriter mplew, Map stats) { + private static void writeIntMask(OutPacket p, Map stats) { int firstmask = 0; int secondmask = 0; for (MonsterStatus stat : stats.keySet()) { @@ -4127,719 +3914,342 @@ public class PacketCreator { secondmask |= stat.getValue(); } } - mplew.writeInt(firstmask); - mplew.writeInt(secondmask); + p.writeInt(firstmask); + p.writeInt(secondmask); } - public static byte[] applyMonsterStatus(final int oid, final MonsterStatusEffect mse, final List reflection) { + public static Packet applyMonsterStatus(final int oid, final MonsterStatusEffect mse, final List reflection) { Map stati = mse.getStati(); - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.APPLY_MONSTER_STATUS.getValue()); - mplew.writeInt(oid); - mplew.writeLong(0); - writeIntMask(mplew, stati); + final OutPacket p = OutPacket.create(SendOpcode.APPLY_MONSTER_STATUS); + p.writeInt(oid); + p.writeLong(0); + writeIntMask(p, stati); for (Map.Entry stat : stati.entrySet()) { - mplew.writeShort(stat.getValue()); + p.writeShort(stat.getValue()); if (mse.isMonsterSkill()) { - mplew.writeShort(mse.getMobSkill().getSkillId()); - mplew.writeShort(mse.getMobSkill().getSkillLevel()); + p.writeShort(mse.getMobSkill().getSkillId()); + p.writeShort(mse.getMobSkill().getSkillLevel()); } else { - mplew.writeInt(mse.getSkill().getId()); + p.writeInt(mse.getSkill().getId()); } - mplew.writeShort(-1); // might actually be the buffTime but it's not displayed anywhere + p.writeShort(-1); // might actually be the buffTime but it's not displayed anywhere } int size = stati.size(); // size if (reflection != null) { for (Integer ref : reflection) { - mplew.writeInt(ref); + p.writeInt(ref); } if (reflection.size() > 0) { size /= 2; // This gives 2 buffs per reflection but it's really one buff } } - mplew.write(size); // size - mplew.writeInt(0); - return mplew.getPacket(); + p.writeByte(size); // size + p.writeInt(0); + return p; } - public static byte[] cancelMonsterStatus(int oid, Map stats) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_MONSTER_STATUS.getValue()); - mplew.writeInt(oid); - mplew.writeLong(0); - writeIntMask(mplew, stats); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet cancelMonsterStatus(int oid, Map stats) { + final OutPacket p = OutPacket.create(SendOpcode.CANCEL_MONSTER_STATUS); + p.writeInt(oid); + p.writeLong(0); + writeIntMask(p, stats); + p.writeInt(0); + return p; } - public static byte[] getClock(int time) { // time in seconds - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CLOCK.getValue()); - mplew.write(2); // clock type. if you send 3 here you have to send another byte (which does not matter at all) before the timestamp - mplew.writeInt(time); - return mplew.getPacket(); + public static Packet getClock(int time) { // time in seconds + OutPacket p = OutPacket.create(SendOpcode.CLOCK); + p.writeByte(2); // clock type. if you send 3 here you have to send another byte (which does not matter at all) before the timestamp + p.writeInt(time); + return p; } - public static byte[] getClockTime(int hour, int min, int sec) { // Current Time - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CLOCK.getValue()); - mplew.write(1); //Clock-Type - mplew.write(hour); - mplew.write(min); - mplew.write(sec); - return mplew.getPacket(); + public static Packet getClockTime(int hour, int min, int sec) { // Current Time + OutPacket p = OutPacket.create(SendOpcode.CLOCK); + p.writeByte(1); //Clock-Type + p.writeByte(hour); + p.writeByte(min); + p.writeByte(sec); + return p; } - public static byte[] removeClock() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STOP_CLOCK.getValue()); - mplew.write(0); - return mplew.getPacket(); + public static Packet removeClock() { + final OutPacket p = OutPacket.create(SendOpcode.STOP_CLOCK); + p.writeByte(0); + return p; } - public static byte[] spawnMist(int oid, int ownerCid, int skill, int level, MapleMist mist) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_MIST.getValue()); - mplew.writeInt(oid); - mplew.writeInt(mist.isMobMist() ? 0 : mist.isPoisonMist() ? 1 : mist.isRecoveryMist() ? 4 : 2); // mob mist = 0, player poison = 1, smokescreen = 2, unknown = 3, recovery = 4 - mplew.writeInt(ownerCid); - mplew.writeInt(skill); - mplew.write(level); - mplew.writeShort(mist.getSkillDelay()); // Skill delay - mplew.writeInt(mist.getBox().x); - mplew.writeInt(mist.getBox().y); - mplew.writeInt(mist.getBox().x + mist.getBox().width); - mplew.writeInt(mist.getBox().y + mist.getBox().height); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet spawnMist(int objId, int ownerChrId, int skill, int level, MapleMist mist) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_MIST); + p.writeInt(objId); + p.writeInt(mist.isMobMist() ? 0 : mist.isPoisonMist() ? 1 : mist.isRecoveryMist() ? 4 : 2); // mob mist = 0, player poison = 1, smokescreen = 2, unknown = 3, recovery = 4 + p.writeInt(ownerChrId); + p.writeInt(skill); + p.writeByte(level); + p.writeShort(mist.getSkillDelay()); // Skill delay + p.writeInt(mist.getBox().x); + p.writeInt(mist.getBox().y); + p.writeInt(mist.getBox().x + mist.getBox().width); + p.writeInt(mist.getBox().y + mist.getBox().height); + p.writeInt(0); + return p; } - public static byte[] removeMist(int oid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.REMOVE_MIST.getValue()); - mplew.writeInt(oid); - return mplew.getPacket(); + public static Packet removeMist(int objId) { + OutPacket p = OutPacket.create(SendOpcode.REMOVE_MIST); + p.writeInt(objId); + return p; } - public static byte[] damageSummon(int cid, int oid, int damage, int monsterIdFrom) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DAMAGE_SUMMON.getValue()); - mplew.writeInt(cid); - mplew.writeInt(oid); - mplew.write(12); - mplew.writeInt(damage); // damage display doesn't seem to work... - mplew.writeInt(monsterIdFrom); - mplew.write(0); - return mplew.getPacket(); + public static Packet damageSummon(int cid, int oid, int damage, int monsterIdFrom) { + final OutPacket p = OutPacket.create(SendOpcode.DAMAGE_SUMMON); + p.writeInt(cid); + p.writeInt(oid); + p.writeByte(12); + p.writeInt(damage); // damage display doesn't seem to work... + p.writeInt(monsterIdFrom); + p.writeByte(0); + return p; } - public static byte[] damageMonster(int oid, int damage) { + public static Packet damageMonster(int oid, int damage) { return damageMonster(oid, damage, 0, 0); } - public static byte[] healMonster(int oid, int heal, int curhp, int maxhp) { + public static Packet healMonster(int oid, int heal, int curhp, int maxhp) { return damageMonster(oid, -heal, curhp, maxhp); } - private static byte[] damageMonster(int oid, int damage, int curhp, int maxhp) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DAMAGE_MONSTER.getValue()); - mplew.writeInt(oid); - mplew.write(0); - mplew.writeInt(damage); - mplew.writeInt(curhp); - mplew.writeInt(maxhp); - return mplew.getPacket(); + private static Packet damageMonster(int oid, int damage, int curhp, int maxhp) { + final OutPacket p = OutPacket.create(SendOpcode.DAMAGE_MONSTER); + p.writeInt(oid); + p.writeByte(0); + p.writeInt(damage); + p.writeInt(curhp); + p.writeInt(maxhp); + return p; } - public static byte[] updateBuddylist(Collection buddylist) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); - mplew.write(7); - mplew.write(buddylist.size()); + public static Packet updateBuddylist(Collection buddylist) { + OutPacket p = OutPacket.create(SendOpcode.BUDDYLIST); + p.writeByte(7); + p.writeByte(buddylist.size()); for (BuddylistEntry buddy : buddylist) { if (buddy.isVisible()) { - mplew.writeInt(buddy.getCharacterId()); // cid - mplew.writeAsciiString(getRightPaddedStr(buddy.getName(), '\0', 13)); - mplew.write(0); // opposite status - mplew.writeInt(buddy.getChannel() - 1); - mplew.writeAsciiString(getRightPaddedStr(buddy.getGroup(), '\0', 13)); - mplew.writeInt(0);//mapid? + p.writeInt(buddy.getCharacterId()); // cid + p.writeFixedString(getRightPaddedStr(buddy.getName(), '\0', 13)); + p.writeByte(0); // opposite status + p.writeInt(buddy.getChannel() - 1); + p.writeFixedString(getRightPaddedStr(buddy.getGroup(), '\0', 13)); + p.writeInt(0);//mapid? } } for (int x = 0; x < buddylist.size(); x++) { - mplew.writeInt(0);//mapid? + p.writeInt(0);//mapid? } - return mplew.getPacket(); + return p; } - public static byte[] buddylistMessage(byte message) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); - mplew.write(message); - return mplew.getPacket(); + public static Packet buddylistMessage(byte message) { + final OutPacket p = OutPacket.create(SendOpcode.BUDDYLIST); + p.writeByte(message); + return p; } - public static byte[] requestBuddylistAdd(int cidFrom, int cid, String nameFrom) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); - mplew.write(9); - mplew.writeInt(cidFrom); - mplew.writeMapleAsciiString(nameFrom); - mplew.writeInt(cidFrom); - mplew.writeAsciiString(getRightPaddedStr(nameFrom, '\0', 11)); - mplew.write(0x09); - mplew.write(0xf0); - mplew.write(0x01); - mplew.writeInt(0x0f); - mplew.writeNullTerminatedAsciiString("Default Group"); - mplew.writeInt(cid); - return mplew.getPacket(); + public static Packet requestBuddylistAdd(int chrIdFrom, int chrId, String nameFrom) { + OutPacket p = OutPacket.create(SendOpcode.BUDDYLIST); + p.writeByte(9); + p.writeInt(chrIdFrom); + p.writeString(nameFrom); + p.writeInt(chrIdFrom); + p.writeFixedString(getRightPaddedStr(nameFrom, '\0', 11)); + p.writeByte(0x09); + p.writeByte(0xf0); + p.writeByte(0x01); + p.writeInt(0x0f); + p.writeFixedString("Default Group"); + p.writeByte(0); + p.writeInt(chrId); + return p; } - public static byte[] updateBuddyChannel(int characterid, int channel) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); - mplew.write(0x14); - mplew.writeInt(characterid); - mplew.write(0); - mplew.writeInt(channel); - return mplew.getPacket(); + public static Packet updateBuddyChannel(int characterid, int channel) { + final OutPacket p = OutPacket.create(SendOpcode.BUDDYLIST); + p.writeByte(0x14); + p.writeInt(characterid); + p.writeByte(0); + p.writeInt(channel); + return p; } - public static byte[] itemEffect(int characterid, int itemid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_EFFECT.getValue()); - mplew.writeInt(characterid); - mplew.writeInt(itemid); - return mplew.getPacket(); + public static Packet itemEffect(int characterid, int itemid) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_EFFECT); + p.writeInt(characterid); + p.writeInt(itemid); + return p; } - public static byte[] updateBuddyCapacity(int capacity) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); - mplew.write(0x15); - mplew.write(capacity); - return mplew.getPacket(); + public static Packet updateBuddyCapacity(int capacity) { + final OutPacket p = OutPacket.create(SendOpcode.BUDDYLIST); + p.writeByte(0x15); + p.writeByte(capacity); + return p; } - public static byte[] showChair(int characterid, int itemid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_CHAIR.getValue()); - mplew.writeInt(characterid); - mplew.writeInt(itemid); - return mplew.getPacket(); + public static Packet showChair(int characterid, int itemid) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_CHAIR); + p.writeInt(characterid); + p.writeInt(itemid); + return p; } - public static byte[] cancelChair(int id) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_CHAIR.getValue()); + public static Packet cancelChair(int id) { + final OutPacket p = OutPacket.create(SendOpcode.CANCEL_CHAIR); if (id < 0) { - mplew.write(0); + p.writeByte(0); } else { - mplew.write(1); - mplew.writeShort(id); + p.writeByte(1); + p.writeShort(id); } - return mplew.getPacket(); + return p; } // is there a way to spawn reactors non-animated? - public static byte[] spawnReactor(MapleReactor reactor) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - Point pos = reactor.getPosition(); - mplew.writeShort(SendOpcode.REACTOR_SPAWN.getValue()); - mplew.writeInt(reactor.getObjectId()); - mplew.writeInt(reactor.getId()); - mplew.write(reactor.getState()); - mplew.writePos(pos); - mplew.write(0); - mplew.writeShort(0); - return mplew.getPacket(); + public static Packet spawnReactor(MapleReactor reactor) { + OutPacket p = OutPacket.create(SendOpcode.REACTOR_SPAWN); + p.writeInt(reactor.getObjectId()); + p.writeInt(reactor.getId()); + p.writeByte(reactor.getState()); + p.writePos(reactor.getPosition()); + p.writeByte(0); + p.writeShort(0); + return p; } // is there a way to trigger reactors without performing the hit animation? - public static byte[] triggerReactor(MapleReactor reactor, int stance) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - Point pos = reactor.getPosition(); - mplew.writeShort(SendOpcode.REACTOR_HIT.getValue()); - mplew.writeInt(reactor.getObjectId()); - mplew.write(reactor.getState()); - mplew.writePos(pos); - mplew.write(stance); - mplew.writeShort(0); - mplew.write(5); // frame delay, set to 5 since there doesn't appear to be a fixed formula for it - return mplew.getPacket(); + public static Packet triggerReactor(MapleReactor reactor, int stance) { + OutPacket p = OutPacket.create(SendOpcode.REACTOR_HIT); + p.writeInt(reactor.getObjectId()); + p.writeByte(reactor.getState()); + p.writePos(reactor.getPosition()); + p.writeByte(stance); + p.writeShort(0); + p.writeByte(5); // frame delay, set to 5 since there doesn't appear to be a fixed formula for it + return p; } - public static byte[] destroyReactor(MapleReactor reactor) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - Point pos = reactor.getPosition(); - mplew.writeShort(SendOpcode.REACTOR_DESTROY.getValue()); - mplew.writeInt(reactor.getObjectId()); - mplew.write(reactor.getState()); - mplew.writePos(pos); - return mplew.getPacket(); + public static Packet destroyReactor(MapleReactor reactor) { + OutPacket p = OutPacket.create(SendOpcode.REACTOR_DESTROY); + p.writeInt(reactor.getObjectId()); + p.writeByte(reactor.getState()); + p.writePos(reactor.getPosition()); + return p; } - public static byte[] musicChange(String song) { + public static Packet musicChange(String song) { return environmentChange(song, 6); } - public static byte[] showEffect(String effect) { + public static Packet showEffect(String effect) { return environmentChange(effect, 3); } - public static byte[] playSound(String sound) { + public static Packet playSound(String sound) { return environmentChange(sound, 4); } - public static byte[] environmentChange(String env, int mode) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); - mplew.write(mode); - mplew.writeMapleAsciiString(env); - return mplew.getPacket(); + public static Packet environmentChange(String env, int mode) { + OutPacket p = OutPacket.create(SendOpcode.FIELD_EFFECT); + p.writeByte(mode); + p.writeString(env); + return p; } - public static byte[] environmentMove(String env, int mode) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - - mplew.writeShort(SendOpcode.FIELD_OBSTACLE_ONOFF.getValue()); - mplew.writeMapleAsciiString(env); - mplew.writeInt(mode); // 0: stop and back to start, 1: move - - return mplew.getPacket(); + public static Packet environmentMove(String env, int mode) { + OutPacket p = OutPacket.create(SendOpcode.FIELD_OBSTACLE_ONOFF); + p.writeString(env); + p.writeInt(mode); // 0: stop and back to start, 1: move + return p; } - public static byte[] environmentMoveList(Set> envList) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_OBSTACLE_ONOFF_LIST.getValue()); - mplew.writeInt(envList.size()); + public static Packet environmentMoveList(Set> envList) { + OutPacket p = OutPacket.create(SendOpcode.FIELD_OBSTACLE_ONOFF_LIST); + p.writeInt(envList.size()); for (Entry envMove : envList) { - mplew.writeMapleAsciiString(envMove.getKey()); - mplew.writeInt(envMove.getValue()); + p.writeString(envMove.getKey()); + p.writeInt(envMove.getValue()); } - return mplew.getPacket(); + return p; } - public static byte[] environmentMoveReset() { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_OBSTACLE_ALL_RESET.getValue()); - return mplew.getPacket(); + public static Packet environmentMoveReset() { + return OutPacket.create(SendOpcode.FIELD_OBSTACLE_ALL_RESET); } - public static byte[] startMapEffect(String msg, int itemid, boolean active) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BLOW_WEATHER.getValue()); - mplew.write(active ? 0 : 1); - mplew.writeInt(itemid); + public static Packet startMapEffect(String msg, int itemId, boolean active) { + OutPacket p = OutPacket.create(SendOpcode.BLOW_WEATHER); + p.writeBool(!active); + p.writeInt(itemId); if (active) { - mplew.writeMapleAsciiString(msg); + p.writeString(msg); } - return mplew.getPacket(); + return p; } - public static byte[] removeMapEffect() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BLOW_WEATHER.getValue()); - mplew.write(0); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet removeMapEffect() { + OutPacket p = OutPacket.create(SendOpcode.BLOW_WEATHER); + p.writeByte(0); + p.writeInt(0); + return p; } - public static byte[] mapEffect(String path) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); - mplew.write(3); - mplew.writeMapleAsciiString(path); - return mplew.getPacket(); + public static Packet mapEffect(String path) { + final OutPacket p = OutPacket.create(SendOpcode.FIELD_EFFECT); + p.writeByte(3); + p.writeString(path); + return p; } - public static byte[] mapSound(String path) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); - mplew.write(4); - mplew.writeMapleAsciiString(path); - return mplew.getPacket(); + public static Packet mapSound(String path) { + final OutPacket p = OutPacket.create(SendOpcode.FIELD_EFFECT); + p.writeByte(4); + p.writeString(path); + return p; } - public static byte[] showGuildInfo(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x1A); //signature for showing guild info - if (chr == null) { //show empty guild (used for leaving, expelled) - mplew.write(0); - return mplew.getPacket(); - } - MapleGuild g = chr.getClient().getWorldServer().getGuild(chr.getMGC()); - if (g == null) { //failed to read from DB - don't show a guild - mplew.write(0); - return mplew.getPacket(); - } - mplew.write(1); //bInGuild - mplew.writeInt(g.getId()); - mplew.writeMapleAsciiString(g.getName()); - for (int i = 1; i <= 5; i++) { - mplew.writeMapleAsciiString(g.getRankTitle(i)); - } - Collection members = g.getMembers(); - mplew.write(members.size()); //then it is the size of all the members - for (MapleGuildCharacter mgc : members) {//and each of their character ids o_O - mplew.writeInt(mgc.getId()); - } - for (MapleGuildCharacter mgc : members) { - mplew.writeAsciiString(getRightPaddedStr(mgc.getName(), '\0', 13)); - mplew.writeInt(mgc.getJobId()); - mplew.writeInt(mgc.getLevel()); - mplew.writeInt(mgc.getGuildRank()); - mplew.writeInt(mgc.isOnline() ? 1 : 0); - mplew.writeInt(g.getSignature()); - mplew.writeInt(mgc.getAllianceRank()); - } - mplew.writeInt(g.getCapacity()); - mplew.writeShort(g.getLogoBG()); - mplew.write(g.getLogoBGColor()); - mplew.writeShort(g.getLogo()); - mplew.write(g.getLogoColor()); - mplew.writeMapleAsciiString(g.getNotice()); - mplew.writeInt(g.getGP()); - mplew.writeInt(g.getAllianceId()); - return mplew.getPacket(); + public static Packet skillEffect(MapleCharacter from, int skillId, int level, byte flags, int speed, byte direction) { + final OutPacket p = OutPacket.create(SendOpcode.SKILL_EFFECT); + p.writeInt(from.getId()); + p.writeInt(skillId); + p.writeByte(level); + p.writeByte(flags); + p.writeByte(speed); + p.writeByte(direction); //Mmmk + return p; } - public static byte[] guildMemberOnline(int gid, int cid, boolean bOnline) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x3d); - mplew.writeInt(gid); - mplew.writeInt(cid); - mplew.write(bOnline ? 1 : 0); - return mplew.getPacket(); + public static Packet skillCancel(MapleCharacter from, int skillId) { + final OutPacket p = OutPacket.create(SendOpcode.CANCEL_SKILL_EFFECT); + p.writeInt(from.getId()); + p.writeInt(skillId); + return p; } - public static byte[] guildInvite(int gid, String charName) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x05); - mplew.writeInt(gid); - mplew.writeMapleAsciiString(charName); - return mplew.getPacket(); + public static Packet catchMonster(int mobOid, byte success) { // updated packet structure found thanks to Rien dev team + final OutPacket p = OutPacket.create(SendOpcode.CATCH_MONSTER); + p.writeInt(mobOid); + p.writeByte(success); + return p; } - public static byte[] createGuildMessage(String masterName, String guildName) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x3); - mplew.writeInt(0); - mplew.writeMapleAsciiString(masterName); - mplew.writeMapleAsciiString(guildName); - return mplew.getPacket(); - } - - /** - * Gets a Heracle/guild message packet. - *

- * Possible values for code:
28: guild name already in use
- * 31: problem in locating players during agreement
33/40: already joined a guild
- * 35: Cannot make guild
36: problem in player agreement
38: problem during forming guild
- * 41: max number of players in joining guild
42: character can't be found this channel
- * 45/48: character not in guild
52: problem in disbanding guild
56: admin cannot make guild
- * 57: problem in increasing guild size
- * - * @param code The response code. - * @return The guild message packet. - */ - public static byte[] genericGuildMessage(byte code) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(code); - return mplew.getPacket(); - } - - /** - * Gets a guild message packet appended with target name. - *

- * 53: player not accepting guild invites
- * 54: player already managing an invite
55: player denied an invite
- * - * @param code The response code. - * @param targetName The initial player target of the invitation. - * @return The guild message packet. - */ - public static byte[] responseGuildMessage(byte code, String targetName) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(code); - mplew.writeMapleAsciiString(targetName); - return mplew.getPacket(); - } - - public static byte[] newGuildMember(MapleGuildCharacter mgc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x27); - mplew.writeInt(mgc.getGuildId()); - mplew.writeInt(mgc.getId()); - mplew.writeAsciiString(getRightPaddedStr(mgc.getName(), '\0', 13)); - mplew.writeInt(mgc.getJobId()); - mplew.writeInt(mgc.getLevel()); - mplew.writeInt(mgc.getGuildRank()); //should be always 5 but whatevs - mplew.writeInt(mgc.isOnline() ? 1 : 0); //should always be 1 too - mplew.writeInt(1); //? could be guild signature, but doesn't seem to matter - mplew.writeInt(3); - return mplew.getPacket(); - } - - //someone leaving, mode == 0x2c for leaving, 0x2f for expelled - public static byte[] memberLeft(MapleGuildCharacter mgc, boolean bExpelled) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(bExpelled ? 0x2f : 0x2c); - mplew.writeInt(mgc.getGuildId()); - mplew.writeInt(mgc.getId()); - mplew.writeMapleAsciiString(mgc.getName()); - return mplew.getPacket(); - } - - //rank change - public static byte[] changeRank(MapleGuildCharacter mgc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x40); - mplew.writeInt(mgc.getGuildId()); - mplew.writeInt(mgc.getId()); - mplew.write(mgc.getGuildRank()); - return mplew.getPacket(); - } - - public static byte[] guildNotice(int gid, String notice) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x44); - mplew.writeInt(gid); - mplew.writeMapleAsciiString(notice); - return mplew.getPacket(); - } - - public static byte[] guildMemberLevelJobUpdate(MapleGuildCharacter mgc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x3C); - mplew.writeInt(mgc.getGuildId()); - mplew.writeInt(mgc.getId()); - mplew.writeInt(mgc.getLevel()); - mplew.writeInt(mgc.getJobId()); - return mplew.getPacket(); - } - - public static byte[] rankTitleChange(int gid, String[] ranks) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x3E); - mplew.writeInt(gid); - for (int i = 0; i < 5; i++) { - mplew.writeMapleAsciiString(ranks[i]); - } - return mplew.getPacket(); - } - - public static byte[] guildDisband(int gid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x32); - mplew.writeInt(gid); - mplew.write(1); - return mplew.getPacket(); - } - - public static byte[] guildQuestWaitingNotice(byte channel, int waitingPos) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x4C); - mplew.write(channel - 1); - mplew.write(waitingPos); - return mplew.getPacket(); - } - - public static byte[] guildEmblemChange(int gid, short bg, byte bgcolor, short logo, byte logocolor) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x42); - mplew.writeInt(gid); - mplew.writeShort(bg); - mplew.write(bgcolor); - mplew.writeShort(logo); - mplew.write(logocolor); - return mplew.getPacket(); - } - - public static byte[] guildCapacityChange(int gid, int capacity) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x3A); - mplew.writeInt(gid); - mplew.write(capacity); - return mplew.getPacket(); - } - - public static void addThread(final MaplePacketLittleEndianWriter mplew, ResultSet rs) throws SQLException { - mplew.writeInt(rs.getInt("localthreadid")); - mplew.writeInt(rs.getInt("postercid")); - mplew.writeMapleAsciiString(rs.getString("name")); - mplew.writeLong(getTime(rs.getLong("timestamp"))); - mplew.writeInt(rs.getInt("icon")); - mplew.writeInt(rs.getInt("replycount")); - } - - public static byte[] BBSThreadList(ResultSet rs, int start) throws SQLException { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_BBS_PACKET.getValue()); - mplew.write(0x06); - if (!rs.last()) { - mplew.write(0); - mplew.writeInt(0); - mplew.writeInt(0); - return mplew.getPacket(); - } - int threadCount = rs.getRow(); - if (rs.getInt("localthreadid") == 0) { //has a notice - mplew.write(1); - addThread(mplew, rs); - threadCount--; //one thread didn't count (because it's a notice) - } else { - mplew.write(0); - } - if (!rs.absolute(start + 1)) { //seek to the thread before where we start - rs.first(); //uh, we're trying to start at a place past possible - start = 0; - } - mplew.writeInt(threadCount); - mplew.writeInt(Math.min(10, threadCount - start)); - for (int i = 0; i < Math.min(10, threadCount - start); i++) { - addThread(mplew, rs); - rs.next(); - } - return mplew.getPacket(); - } - - public static byte[] showThread(int localthreadid, ResultSet threadRS, ResultSet repliesRS) throws SQLException, RuntimeException { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_BBS_PACKET.getValue()); - mplew.write(0x07); - mplew.writeInt(localthreadid); - mplew.writeInt(threadRS.getInt("postercid")); - mplew.writeLong(getTime(threadRS.getLong("timestamp"))); - mplew.writeMapleAsciiString(threadRS.getString("name")); - mplew.writeMapleAsciiString(threadRS.getString("startpost")); - mplew.writeInt(threadRS.getInt("icon")); - if (repliesRS != null) { - int replyCount = threadRS.getInt("replycount"); - mplew.writeInt(replyCount); - int i; - for (i = 0; i < replyCount && repliesRS.next(); i++) { - mplew.writeInt(repliesRS.getInt("replyid")); - mplew.writeInt(repliesRS.getInt("postercid")); - mplew.writeLong(getTime(repliesRS.getLong("timestamp"))); - mplew.writeMapleAsciiString(repliesRS.getString("content")); - } - if (i != replyCount || repliesRS.next()) { - throw new RuntimeException(String.valueOf(threadRS.getInt("threadid"))); - } - } else { - mplew.writeInt(0); - } - return mplew.getPacket(); - } - - public static byte[] showGuildRanks(int npcid, ResultSet rs) throws SQLException { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x49); - mplew.writeInt(npcid); - if (!rs.last()) { //no guilds o.o - mplew.writeInt(0); - return mplew.getPacket(); - } - mplew.writeInt(rs.getRow()); //number of entries - rs.beforeFirst(); - while (rs.next()) { - mplew.writeMapleAsciiString(rs.getString("name")); - mplew.writeInt(rs.getInt("GP")); - mplew.writeInt(rs.getInt("logo")); - mplew.writeInt(rs.getInt("logoColor")); - mplew.writeInt(rs.getInt("logoBG")); - mplew.writeInt(rs.getInt("logoBGColor")); - } - return mplew.getPacket(); - } - - public static byte[] showPlayerRanks(int npcid, List> worldRanking) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x49); - mplew.writeInt(npcid); - if (worldRanking.isEmpty()) { - mplew.writeInt(0); - return mplew.getPacket(); - } - mplew.writeInt(worldRanking.size()); - for (Pair wr : worldRanking) { - mplew.writeMapleAsciiString(wr.getLeft()); - mplew.writeInt(wr.getRight()); - mplew.writeInt(0); - mplew.writeInt(0); - mplew.writeInt(0); - mplew.writeInt(0); - } - return mplew.getPacket(); - } - - public static byte[] updateGP(int gid, int GP) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); - mplew.write(0x48); - mplew.writeInt(gid); - mplew.writeInt(GP); - return mplew.getPacket(); - } - - public static byte[] skillEffect(MapleCharacter from, int skillId, int level, byte flags, int speed, byte direction) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SKILL_EFFECT.getValue()); - mplew.writeInt(from.getId()); - mplew.writeInt(skillId); - mplew.write(level); - mplew.write(flags); - mplew.write(speed); - mplew.write(direction); //Mmmk - return mplew.getPacket(); - } - - public static byte[] skillCancel(MapleCharacter from, int skillId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_SKILL_EFFECT.getValue()); - mplew.writeInt(from.getId()); - mplew.writeInt(skillId); - return mplew.getPacket(); - } - - public static byte[] catchMonster(int mobOid, byte success) { // updated packet structure found thanks to Rien dev team - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CATCH_MONSTER.getValue()); - mplew.writeInt(mobOid); - mplew.write(success); - return mplew.getPacket(); - } - - public static byte[] catchMonster(int mobOid, int itemid, byte success) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CATCH_MONSTER_WITH_ITEM.getValue()); - mplew.writeInt(mobOid); - mplew.writeInt(itemid); - mplew.write(success); - return mplew.getPacket(); + public static Packet catchMonster(int mobOid, int itemid, byte success) { + final OutPacket p = OutPacket.create(SendOpcode.CATCH_MONSTER_WITH_ITEM); + p.writeInt(mobOid); + p.writeInt(itemid); + p.writeByte(success); + return p; } /** @@ -4850,7 +4260,7 @@ public class PacketCreator { * @param height How long the box is going to be. * @return The player hint packet. */ - public static byte[] sendHint(String hint, int width, int height) { + public static Packet sendHint(String hint, int width, int height) { if (width < 1) { width = hint.length() * 10; if (width < 40) { @@ -4860,423 +4270,388 @@ public class PacketCreator { if (height < 5) { height = 5; } - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_HINT.getValue()); - mplew.writeMapleAsciiString(hint); - mplew.writeShort(width); - mplew.writeShort(height); - mplew.write(1); - return mplew.getPacket(); + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_HINT); + p.writeString(hint); + p.writeShort(width); + p.writeShort(height); + p.writeByte(1); + return p; } - public static byte[] messengerInvite(String from, int messengerid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MESSENGER.getValue()); - mplew.write(0x03); - mplew.writeMapleAsciiString(from); - mplew.write(0); - mplew.writeInt(messengerid); - mplew.write(0); - return mplew.getPacket(); + public static Packet messengerInvite(String from, int messengerid) { + final OutPacket p = OutPacket.create(SendOpcode.MESSENGER); + p.writeByte(0x03); + p.writeString(from); + p.writeByte(0); + p.writeInt(messengerid); + p.writeByte(0); + return p; } /* - public static byte[] sendSpouseChat(MapleCharacter partner, String msg) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPOUSE_CHAT.getValue()); - mplew.writeMapleAsciiString(partner.getName()); - mplew.writeMapleAsciiString(msg); - return mplew.getPacket(); + public static Packet sendSpouseChat(MapleCharacter partner, String msg) { + OutPacket p = OutPacket.create(SendOpcode); + SPOUSE_CHAT); + p.writeString(partner.getName()); + p.writeString(msg); + return p; } */ - public static byte[] OnCoupleMessage(String fiance, String text, boolean spouse) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPOUSE_CHAT.getValue()); - mplew.write(spouse ? 5 : 4); // v2 = CInPacket::Decode1(a1) - 4; + public static Packet OnCoupleMessage(String fiance, String text, boolean spouse) { + OutPacket p = OutPacket.create(SendOpcode.SPOUSE_CHAT); + p.writeByte(spouse ? 5 : 4); // v2 = CInPacket::Decode1(a1) - 4; if (spouse) { // if ( v2 ) { - mplew.writeMapleAsciiString(fiance); + p.writeString(fiance); } - mplew.write(spouse ? 5 : 1); - mplew.writeMapleAsciiString(text); - return mplew.getPacket(); + p.writeByte(spouse ? 5 : 1); + p.writeString(text); + return p; } - public static byte[] addMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MESSENGER.getValue()); - mplew.write(0x00); - mplew.write(position); - addCharLook(mplew, chr, true); - mplew.writeMapleAsciiString(from); - mplew.write(channel); - mplew.write(0x00); - return mplew.getPacket(); + public static Packet addMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { + final OutPacket p = OutPacket.create(SendOpcode.MESSENGER); + p.writeByte(0x00); + p.writeByte(position); + addCharLook(p, chr, true); + p.writeString(from); + p.writeByte(channel); + p.writeByte(0x00); + return p; } - public static byte[] removeMessengerPlayer(int position) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MESSENGER.getValue()); - mplew.write(0x02); - mplew.write(position); - return mplew.getPacket(); + public static Packet removeMessengerPlayer(int position) { + final OutPacket p = OutPacket.create(SendOpcode.MESSENGER); + p.writeByte(0x02); + p.writeByte(position); + return p; } - public static byte[] updateMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MESSENGER.getValue()); - mplew.write(0x07); - mplew.write(position); - addCharLook(mplew, chr, true); - mplew.writeMapleAsciiString(from); - mplew.write(channel); - mplew.write(0x00); - return mplew.getPacket(); + public static Packet updateMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { + final OutPacket p = OutPacket.create(SendOpcode.MESSENGER); + p.writeByte(0x07); + p.writeByte(position); + addCharLook(p, chr, true); + p.writeString(from); + p.writeByte(channel); + p.writeByte(0x00); + return p; } - public static byte[] joinMessenger(int position) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MESSENGER.getValue()); - mplew.write(0x01); - mplew.write(position); - return mplew.getPacket(); + public static Packet joinMessenger(int position) { + final OutPacket p = OutPacket.create(SendOpcode.MESSENGER); + p.writeByte(0x01); + p.writeByte(position); + return p; } - public static byte[] messengerChat(String text) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MESSENGER.getValue()); - mplew.write(0x06); - mplew.writeMapleAsciiString(text); - return mplew.getPacket(); + public static Packet messengerChat(String text) { + final OutPacket p = OutPacket.create(SendOpcode.MESSENGER); + p.writeByte(0x06); + p.writeString(text); + return p; } - public static byte[] messengerNote(String text, int mode, int mode2) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MESSENGER.getValue()); - mplew.write(mode); - mplew.writeMapleAsciiString(text); - mplew.write(mode2); - return mplew.getPacket(); + public static Packet messengerNote(String text, int mode, int mode2) { + final OutPacket p = OutPacket.create(SendOpcode.MESSENGER); + p.writeByte(mode); + p.writeString(text); + p.writeByte(mode2); + return p; } - private static void addPetInfo(final MaplePacketLittleEndianWriter mplew, MaplePet pet, boolean showpet) { - mplew.write(1); + private static void addPetInfo(final OutPacket p, MaplePet pet, boolean showpet) { + p.writeByte(1); if (showpet) { - mplew.write(0); + p.writeByte(0); } - mplew.writeInt(pet.getItemId()); - mplew.writeMapleAsciiString(pet.getName()); - mplew.writeLong(pet.getUniqueId()); - mplew.writePos(pet.getPos()); - mplew.write(pet.getStance()); - mplew.writeInt(pet.getFh()); + p.writeInt(pet.getItemId()); + p.writeString(pet.getName()); + p.writeLong(pet.getUniqueId()); + p.writePos(pet.getPos()); + p.writeByte(pet.getStance()); + p.writeInt(pet.getFh()); } - public static byte[] showPet(MapleCharacter chr, MaplePet pet, boolean remove, boolean hunger) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_PET.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(chr.getPetIndex(pet)); + public static Packet showPet(MapleCharacter chr, MaplePet pet, boolean remove, boolean hunger) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_PET); + p.writeInt(chr.getId()); + p.writeByte(chr.getPetIndex(pet)); if (remove) { - mplew.write(0); - mplew.write(hunger ? 1 : 0); + p.writeByte(0); + p.writeBool(hunger); } else { - addPetInfo(mplew, pet, true); + addPetInfo(p, pet, true); } - return mplew.getPacket(); + return p; } - public static byte[] movePet(int cid, int pid, byte slot, List moves) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MOVE_PET.getValue()); - mplew.writeInt(cid); - mplew.write(slot); - mplew.writeInt(pid); - serializeMovementList(mplew, moves); - return mplew.getPacket(); + public static Packet movePet(int cid, int pid, byte slot, List moves) { + final OutPacket p = OutPacket.create(SendOpcode.MOVE_PET); + p.writeInt(cid); + p.writeByte(slot); + p.writeInt(pid); + serializeMovementList(p, moves); + return p; } - public static byte[] petChat(int cid, byte index, int act, String text) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PET_CHAT.getValue()); - mplew.writeInt(cid); - mplew.write(index); - mplew.write(0); - mplew.write(act); - mplew.writeMapleAsciiString(text); - mplew.write(0); - return mplew.getPacket(); + public static Packet petChat(int cid, byte index, int act, String text) { + final OutPacket p = OutPacket.create(SendOpcode.PET_CHAT); + p.writeInt(cid); + p.writeByte(index); + p.writeByte(0); + p.writeByte(act); + p.writeString(text); + p.writeByte(0); + return p; } - public static byte[] petFoodResponse(int cid, byte index, boolean success, boolean balloonType) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PET_COMMAND.getValue()); - mplew.writeInt(cid); - mplew.write(index); - mplew.write(1); - mplew.writeBool(success); - mplew.writeBool(balloonType); - return mplew.getPacket(); + public static Packet petFoodResponse(int cid, byte index, boolean success, boolean balloonType) { + final OutPacket p = OutPacket.create(SendOpcode.PET_COMMAND); + p.writeInt(cid); + p.writeByte(index); + p.writeByte(1); + p.writeBool(success); + p.writeBool(balloonType); + return p; } - public static byte[] commandResponse(int cid, byte index, boolean talk, int animation, boolean balloonType) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PET_COMMAND.getValue()); - mplew.writeInt(cid); - mplew.write(index); - mplew.write(0); - mplew.write(animation); - mplew.writeBool(!talk); - mplew.writeBool(balloonType); - return mplew.getPacket(); + public static Packet commandResponse(int cid, byte index, boolean talk, int animation, boolean balloonType) { + final OutPacket p = OutPacket.create(SendOpcode.PET_COMMAND); + p.writeInt(cid); + p.writeByte(index); + p.writeByte(0); + p.writeByte(animation); + p.writeBool(!talk); + p.writeBool(balloonType); + return p; } - public static byte[] showOwnPetLevelUp(byte index) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(4); - mplew.write(0); - mplew.write(index); // Pet Index - return mplew.getPacket(); + public static Packet showOwnPetLevelUp(byte index) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(4); + p.writeByte(0); + p.writeByte(index); // Pet Index + return p; } - public static byte[] showPetLevelUp(MapleCharacter chr, byte index) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(4); - mplew.write(0); - mplew.write(index); - return mplew.getPacket(); + public static Packet showPetLevelUp(MapleCharacter chr, byte index) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(chr.getId()); + p.writeByte(4); + p.writeByte(0); + p.writeByte(index); + return p; } - public static byte[] changePetName(MapleCharacter chr, String newname, int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PET_NAMECHANGE.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(0); - mplew.writeMapleAsciiString(newname); - mplew.write(0); - return mplew.getPacket(); + public static Packet changePetName(MapleCharacter chr, String newname, int slot) { + OutPacket p = OutPacket.create(SendOpcode.PET_NAMECHANGE); + p.writeInt(chr.getId()); + p.writeByte(0); + p.writeString(newname); + p.writeByte(0); + return p; } - public static final byte[] loadExceptionList(final int cid, final int petId, final byte petIdx, final List data) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PET_EXCEPTION_LIST.getValue()); - mplew.writeInt(cid); - mplew.write(petIdx); - mplew.writeLong(petId); - mplew.write(data.size()); + public static Packet loadExceptionList(final int cid, final int petId, final byte petIdx, final List data) { + final OutPacket p = OutPacket.create(SendOpcode.PET_EXCEPTION_LIST); + p.writeInt(cid); + p.writeByte(petIdx); + p.writeLong(petId); + p.writeByte(data.size()); for (final Integer ids : data) { - mplew.writeInt(ids); + p.writeInt(ids); } - return mplew.getPacket(); + return p; } - public static byte[] petStatUpdate(MapleCharacter chr) { + public static Packet petStatUpdate(MapleCharacter chr) { // this actually does nothing... packet structure and stats needs to be uncovered - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.STAT_CHANGED.getValue()); + final OutPacket p = OutPacket.create(SendOpcode.STAT_CHANGED); int mask = 0; mask |= MapleStat.PET.getValue(); - mplew.write(0); - mplew.writeInt(mask); + p.writeByte(0); + p.writeInt(mask); MaplePet[] pets = chr.getPets(); for (int i = 0; i < 3; i++) { if (pets[i] != null) { - mplew.writeLong(pets[i].getUniqueId()); + p.writeLong(pets[i].getUniqueId()); } else { - mplew.writeLong(0); + p.writeLong(0); } } - mplew.write(0); - return mplew.getPacket(); + p.writeByte(0); + return p; } - public static byte[] showForcedEquip(int team) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FORCED_MAP_EQUIP.getValue()); + public static Packet showForcedEquip(int team) { + OutPacket p = OutPacket.create(SendOpcode.FORCED_MAP_EQUIP); if (team > -1) { - mplew.write(team); // 00 = red, 01 = blue + p.writeByte(team); // 00 = red, 01 = blue } - return mplew.getPacket(); + return p; } - public static byte[] summonSkill(int cid, int summonSkillId, int newStance) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SUMMON_SKILL.getValue()); - mplew.writeInt(cid); - mplew.writeInt(summonSkillId); - mplew.write(newStance); - return mplew.getPacket(); + public static Packet summonSkill(int cid, int summonSkillId, int newStance) { + final OutPacket p = OutPacket.create(SendOpcode.SUMMON_SKILL); + p.writeInt(cid); + p.writeInt(summonSkillId); + p.writeByte(newStance); + return p; } - public static byte[] skillCooldown(int sid, int time) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.COOLDOWN.getValue()); - mplew.writeInt(sid); - mplew.writeShort(time);//Int in v97 - return mplew.getPacket(); + public static Packet skillCooldown(int sid, int time) { + final OutPacket p = OutPacket.create(SendOpcode.COOLDOWN); + p.writeInt(sid); + p.writeShort(time);//Int in v97 + return p; } - public static byte[] skillBookResult(MapleCharacter chr, int skillid, int maxlevel, boolean canuse, boolean success) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SKILL_LEARN_ITEM_RESULT.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(1); - mplew.writeInt(skillid); - mplew.writeInt(maxlevel); - mplew.write(canuse ? 1 : 0); - mplew.write(success ? 1 : 0); - return mplew.getPacket(); + public static Packet skillBookResult(MapleCharacter chr, int skillid, int maxlevel, boolean canuse, boolean success) { + final OutPacket p = OutPacket.create(SendOpcode.SKILL_LEARN_ITEM_RESULT); + p.writeInt(chr.getId()); + p.writeByte(1); + p.writeInt(skillid); + p.writeInt(maxlevel); + p.writeByte(canuse ? 1 : 0); + p.writeByte(success ? 1 : 0); + return p; } - public static byte[] getMacros(SkillMacro[] macros) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MACRO_SYS_DATA_INIT.getValue()); + public static Packet getMacros(SkillMacro[] macros) { + final OutPacket p = OutPacket.create(SendOpcode.MACRO_SYS_DATA_INIT); int count = 0; for (int i = 0; i < 5; i++) { if (macros[i] != null) { count++; } } - mplew.write(count); + p.writeByte(count); for (int i = 0; i < 5; i++) { SkillMacro macro = macros[i]; if (macro != null) { - mplew.writeMapleAsciiString(macro.getName()); - mplew.write(macro.getShout()); - mplew.writeInt(macro.getSkill1()); - mplew.writeInt(macro.getSkill2()); - mplew.writeInt(macro.getSkill3()); + p.writeString(macro.getName()); + p.writeByte(macro.getShout()); + p.writeInt(macro.getSkill1()); + p.writeInt(macro.getSkill2()); + p.writeInt(macro.getSkill3()); } } - return mplew.getPacket(); + return p; } - public static byte[] showAllCharacterInfo(int worldid, List chars, boolean usePic) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.VIEW_ALL_CHAR.getValue()); - mplew.write(0); - mplew.write(worldid); - mplew.write(chars.size()); + public static Packet showAllCharacterInfo(int worldid, List chars, boolean usePic) { + final OutPacket p = OutPacket.create(SendOpcode.VIEW_ALL_CHAR); + p.writeByte(0); + p.writeByte(worldid); + p.writeByte(chars.size()); for (MapleCharacter chr : chars) { - addCharEntry(mplew, chr, true); + addCharEntry(p, chr, true); } - mplew.write(usePic ? 1 : 2); - return mplew.getPacket(); + p.writeByte(usePic ? 1 : 2); + return p; } - public static byte[] updateMount(int charid, MapleMount mount, boolean levelup) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SET_TAMING_MOB_INFO.getValue()); - mplew.writeInt(charid); - mplew.writeInt(mount.getLevel()); - mplew.writeInt(mount.getExp()); - mplew.writeInt(mount.getTiredness()); - mplew.write(levelup ? (byte) 1 : (byte) 0); - return mplew.getPacket(); + public static Packet updateMount(int charid, MapleMount mount, boolean levelup) { + final OutPacket p = OutPacket.create(SendOpcode.SET_TAMING_MOB_INFO); + p.writeInt(charid); + p.writeInt(mount.getLevel()); + p.writeInt(mount.getExp()); + p.writeInt(mount.getTiredness()); + p.writeByte(levelup ? (byte) 1 : (byte) 0); + return p; } - public static byte[] crogBoatPacket(boolean type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CONTI_MOVE.getValue()); - mplew.write(10); - mplew.write(type ? 4 : 5); - return mplew.getPacket(); + public static Packet crogBoatPacket(boolean type) { + OutPacket p = OutPacket.create(SendOpcode.CONTI_MOVE); + p.writeByte(10); + p.writeByte(type ? 4 : 5); + return p; } - public static byte[] boatPacket(boolean type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CONTI_STATE.getValue()); - mplew.write(type ? 1 : 2); - mplew.write(0); - return mplew.getPacket(); + public static Packet boatPacket(boolean type) { + OutPacket p = OutPacket.create(SendOpcode.CONTI_STATE); + p.writeByte(type ? 1 : 2); + p.writeByte(0); + return p; } - public static byte[] getMiniGame(MapleClient c, MapleMiniGame minigame, boolean owner, int piece) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); - mplew.write(1); - mplew.write(0); - mplew.write(owner ? 0 : 1); - mplew.write(0); - addCharLook(mplew, minigame.getOwner(), false); - mplew.writeMapleAsciiString(minigame.getOwner().getName()); + public static Packet getMiniGame(MapleClient c, MapleMiniGame minigame, boolean owner, int piece) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode()); + p.writeByte(1); + p.writeByte(0); + p.writeBool(!owner); + p.writeByte(0); + addCharLook(p, minigame.getOwner(), false); + p.writeString(minigame.getOwner().getName()); if (minigame.getVisitor() != null) { MapleCharacter visitor = minigame.getVisitor(); - mplew.write(1); - addCharLook(mplew, visitor, false); - mplew.writeMapleAsciiString(visitor.getName()); + p.writeByte(1); + addCharLook(p, visitor, false); + p.writeString(visitor.getName()); } - mplew.write(0xFF); - mplew.write(0); - mplew.writeInt(1); - mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.WIN, true)); - mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.TIE, true)); - mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.LOSS, true)); - mplew.writeInt(minigame.getOwnerScore()); + p.writeByte(0xFF); + p.writeByte(0); + p.writeInt(1); + p.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.WIN, true)); + p.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.TIE, true)); + p.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.LOSS, true)); + p.writeInt(minigame.getOwnerScore()); if (minigame.getVisitor() != null) { MapleCharacter visitor = minigame.getVisitor(); - mplew.write(1); - mplew.writeInt(1); - mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.WIN, true)); - mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.TIE, true)); - mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.LOSS, true)); - mplew.writeInt(minigame.getVisitorScore()); + p.writeByte(1); + p.writeInt(1); + p.writeInt(visitor.getMiniGamePoints(MiniGameResult.WIN, true)); + p.writeInt(visitor.getMiniGamePoints(MiniGameResult.TIE, true)); + p.writeInt(visitor.getMiniGamePoints(MiniGameResult.LOSS, true)); + p.writeInt(minigame.getVisitorScore()); } - mplew.write(0xFF); - mplew.writeMapleAsciiString(minigame.getDescription()); - mplew.write(piece); - mplew.write(0); - return mplew.getPacket(); + p.writeByte(0xFF); + p.writeString(minigame.getDescription()); + p.writeByte(piece); + p.writeByte(0); + return p; } - public static byte[] getMiniGameReady(MapleMiniGame game) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.READY.getCode()); - return mplew.getPacket(); + public static Packet getMiniGameReady(MapleMiniGame game) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.READY.getCode()); + return p; } - public static byte[] getMiniGameUnReady(MapleMiniGame game) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.UN_READY.getCode()); - return mplew.getPacket(); + public static Packet getMiniGameUnReady(MapleMiniGame game) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.UN_READY.getCode()); + return p; } - public static byte[] getMiniGameStart(MapleMiniGame game, int loser) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.START.getCode()); - mplew.write(loser); - return mplew.getPacket(); + public static Packet getMiniGameStart(MapleMiniGame game, int loser) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.START.getCode()); + p.writeByte(loser); + return p; } - public static byte[] getMiniGameSkipOwner(MapleMiniGame game) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.SKIP.getCode()); - mplew.write(0x01); - return mplew.getPacket(); + public static Packet getMiniGameSkipOwner(MapleMiniGame game) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.SKIP.getCode()); + p.writeByte(0x01); + return p; } - public static byte[] getMiniGameRequestTie(MapleMiniGame game) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.REQUEST_TIE.getCode()); - return mplew.getPacket(); + public static Packet getMiniGameRequestTie(MapleMiniGame game) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.REQUEST_TIE.getCode()); + return p; } - public static byte[] getMiniGameDenyTie(MapleMiniGame game) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ANSWER_TIE.getCode()); - return mplew.getPacket(); + public static Packet getMiniGameDenyTie(MapleMiniGame game) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ANSWER_TIE.getCode()); + return p; } /** @@ -5291,59 +4666,53 @@ public class PacketCreator { * @param status * @return */ - public static byte[] getMiniRoomError(int status) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); - mplew.write(0); - mplew.write(status); - return mplew.getPacket(); + public static Packet getMiniRoomError(int status) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode()); + p.writeByte(0); + p.writeByte(status); + return p; } - public static byte[] getMiniGameSkipVisitor(MapleMiniGame game) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.writeShort(PlayerInteractionHandler.Action.SKIP.getCode()); - return mplew.getPacket(); + public static Packet getMiniGameSkipVisitor(MapleMiniGame game) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeShort(PlayerInteractionHandler.Action.SKIP.getCode()); + return p; } - public static byte[] getMiniGameMoveOmok(MapleMiniGame game, int move1, int move2, int move3) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(12); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.MOVE_OMOK.getCode()); - mplew.writeInt(move1); - mplew.writeInt(move2); - mplew.write(move3); - return mplew.getPacket(); + public static Packet getMiniGameMoveOmok(MapleMiniGame game, int move1, int move2, int move3) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.MOVE_OMOK.getCode()); + p.writeInt(move1); + p.writeInt(move2); + p.writeByte(move3); + return p; } - public static byte[] getMiniGameNewVisitor(MapleMiniGame minigame, MapleCharacter chr, int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); - mplew.write(slot); - addCharLook(mplew, chr, false); - mplew.writeMapleAsciiString(chr.getName()); - mplew.writeInt(1); - mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.WIN, true)); - mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.TIE, true)); - mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.LOSS, true)); - mplew.writeInt(minigame.getVisitorScore()); - return mplew.getPacket(); + public static Packet getMiniGameNewVisitor(MapleMiniGame minigame, MapleCharacter chr, int slot) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.VISIT.getCode()); + p.writeByte(slot); + addCharLook(p, chr, false); + p.writeString(chr.getName()); + p.writeInt(1); + p.writeInt(chr.getMiniGamePoints(MiniGameResult.WIN, true)); + p.writeInt(chr.getMiniGamePoints(MiniGameResult.TIE, true)); + p.writeInt(chr.getMiniGamePoints(MiniGameResult.LOSS, true)); + p.writeInt(minigame.getVisitorScore()); + return p; } - public static byte[] getMiniGameRemoveVisitor() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); - mplew.write(1); - return mplew.getPacket(); + public static Packet getMiniGameRemoveVisitor() { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.EXIT.getCode()); + p.writeByte(1); + return p; } - private static byte[] getMiniGameResult(MapleMiniGame game, int tie, int result, int forfeit) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.GET_RESULT.getCode()); + private static Packet getMiniGameResult(MapleMiniGame game, int tie, int result, int forfeit) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.GET_RESULT.getCode()); int matchResultType; if (tie == 0 && forfeit != 1) { @@ -5354,107 +4723,104 @@ public class PacketCreator { matchResultType = 2; } - mplew.write(matchResultType); - mplew.writeBool(result == 2); // host/visitor wins + p.writeByte(matchResultType); + p.writeBool(result == 2); // host/visitor wins boolean omok = game.isOmok(); if (matchResultType == 1) { - mplew.write(0); - mplew.writeShort(0); - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses - mplew.writeInt(game.getOwnerScore()); // points + p.writeByte(0); + p.writeShort(0); + p.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + p.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + p.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + p.writeInt(game.getOwnerScore()); // points - mplew.writeInt(0); // unknown - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses - mplew.writeInt(game.getVisitorScore()); // points - mplew.write(0); + p.writeInt(0); // unknown + p.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + p.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + p.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + p.writeInt(game.getVisitorScore()); // points + p.writeByte(0); } else { - mplew.writeInt(0); - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses - mplew.writeInt(game.getOwnerScore()); // points - mplew.writeInt(0); - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses - mplew.writeInt(game.getVisitorScore()); // points + p.writeInt(0); + p.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + p.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + p.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + p.writeInt(game.getOwnerScore()); // points + p.writeInt(0); + p.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + p.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + p.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + p.writeInt(game.getVisitorScore()); // points } - return mplew.getPacket(); + return p; } - public static byte[] getMiniGameOwnerWin(MapleMiniGame game, boolean forfeit) { + public static Packet getMiniGameOwnerWin(MapleMiniGame game, boolean forfeit) { return getMiniGameResult(game, 0, 1, forfeit ? 1 : 0); } - public static byte[] getMiniGameVisitorWin(MapleMiniGame game, boolean forfeit) { + public static Packet getMiniGameVisitorWin(MapleMiniGame game, boolean forfeit) { return getMiniGameResult(game, 0, 2, forfeit ? 1 : 0); } - public static byte[] getMiniGameTie(MapleMiniGame game) { + public static Packet getMiniGameTie(MapleMiniGame game) { return getMiniGameResult(game, 1, 3, 0); } - public static byte[] getMiniGameClose(boolean visitor, int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); - mplew.writeBool(visitor); - mplew.write(type); /* 2 : CRASH 3 : The room has been closed 4 : You have left the room 5 : You have been expelled */ - return mplew.getPacket(); + public static Packet getMiniGameClose(boolean visitor, int type) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.EXIT.getCode()); + p.writeBool(visitor); + p.writeByte(type); /* 2 : CRASH 3 : The room has been closed 4 : You have left the room 5 : You have been expelled */ + return p; } - public static byte[] getMatchCard(MapleClient c, MapleMiniGame minigame, boolean owner, int piece) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); - mplew.write(2); - mplew.write(2); - mplew.write(owner ? 0 : 1); - mplew.write(0); - addCharLook(mplew, minigame.getOwner(), false); - mplew.writeMapleAsciiString(minigame.getOwner().getName()); + public static Packet getMatchCard(MapleClient c, MapleMiniGame minigame, boolean owner, int piece) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode()); + p.writeByte(2); + p.writeByte(2); + p.writeBool(!owner); + p.writeByte(0); + addCharLook(p, minigame.getOwner(), false); + p.writeString(minigame.getOwner().getName()); if (minigame.getVisitor() != null) { MapleCharacter visitor = minigame.getVisitor(); - mplew.write(1); - addCharLook(mplew, visitor, false); - mplew.writeMapleAsciiString(visitor.getName()); + p.writeByte(1); + addCharLook(p, visitor, false); + p.writeString(visitor.getName()); } - mplew.write(0xFF); - mplew.write(0); - mplew.writeInt(2); - mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.WIN, false)); - mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.TIE, false)); - mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.LOSS, false)); + p.writeByte(0xFF); + p.writeByte(0); + p.writeInt(2); + p.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.WIN, false)); + p.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.TIE, false)); + p.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.LOSS, false)); //set vs - mplew.writeInt(minigame.getOwnerScore()); + p.writeInt(minigame.getOwnerScore()); if (minigame.getVisitor() != null) { MapleCharacter visitor = minigame.getVisitor(); - mplew.write(1); - mplew.writeInt(2); - mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.WIN, false)); - mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.TIE, false)); - mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.LOSS, false)); - mplew.writeInt(minigame.getVisitorScore()); + p.writeByte(1); + p.writeInt(2); + p.writeInt(visitor.getMiniGamePoints(MiniGameResult.WIN, false)); + p.writeInt(visitor.getMiniGamePoints(MiniGameResult.TIE, false)); + p.writeInt(visitor.getMiniGamePoints(MiniGameResult.LOSS, false)); + p.writeInt(minigame.getVisitorScore()); } - mplew.write(0xFF); - mplew.writeMapleAsciiString(minigame.getDescription()); - mplew.write(piece); - mplew.write(0); - return mplew.getPacket(); + p.writeByte(0xFF); + p.writeString(minigame.getDescription()); + p.writeByte(piece); + p.writeByte(0); + return p; } - public static byte[] getMatchCardStart(MapleMiniGame game, int loser) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.START.getCode()); - mplew.write(loser); + public static Packet getMatchCardStart(MapleMiniGame game, int loser) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.START.getCode()); + p.writeByte(loser); int last; if (game.getMatchesToWin() > 10) { @@ -5465,174 +4831,159 @@ public class PacketCreator { last = 12; } - mplew.write(last); + p.writeByte(last); for (int i = 0; i < last; i++) { - mplew.writeInt(game.getCardId(i)); + p.writeInt(game.getCardId(i)); } - return mplew.getPacket(); + return p; } - public static byte[] getMatchCardNewVisitor(MapleMiniGame minigame, MapleCharacter chr, int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); - mplew.write(slot); - addCharLook(mplew, chr, false); - mplew.writeMapleAsciiString(chr.getName()); - mplew.writeInt(1); - mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.WIN, false)); - mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.TIE, false)); - mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.LOSS, false)); - mplew.writeInt(minigame.getVisitorScore()); - return mplew.getPacket(); + public static Packet getMatchCardNewVisitor(MapleMiniGame minigame, MapleCharacter chr, int slot) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.VISIT.getCode()); + p.writeByte(slot); + addCharLook(p, chr, false); + p.writeString(chr.getName()); + p.writeInt(1); + p.writeInt(chr.getMiniGamePoints(MiniGameResult.WIN, false)); + p.writeInt(chr.getMiniGamePoints(MiniGameResult.TIE, false)); + p.writeInt(chr.getMiniGamePoints(MiniGameResult.LOSS, false)); + p.writeInt(minigame.getVisitorScore()); + return p; } - public static byte[] getMatchCardSelect(MapleMiniGame game, int turn, int slot, int firstslot, int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.SELECT_CARD.getCode()); - mplew.write(turn); + public static Packet getMatchCardSelect(MapleMiniGame game, int turn, int slot, int firstslot, int type) { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.SELECT_CARD.getCode()); + p.writeByte(turn); if (turn == 1) { - mplew.write(slot); + p.writeByte(slot); } else if (turn == 0) { - mplew.write(slot); - mplew.write(firstslot); - mplew.write(type); + p.writeByte(slot); + p.writeByte(firstslot); + p.writeByte(type); } - return mplew.getPacket(); + return p; } // RPS_GAME packets thanks to Arnah (Vertisy) - public static byte[] openRPSNPC() { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.RPS_GAME.getValue()); - mplew.write(8);// open npc - mplew.writeInt(9000019); - return mplew.getPacket(); + public static Packet openRPSNPC() { + OutPacket p = OutPacket.create(SendOpcode.RPS_GAME); + p.writeByte(8);// open npc + p.writeInt(9000019); + return p; } - public static byte[] rpsMesoError(int mesos) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.RPS_GAME.getValue()); - mplew.write(0x06); + public static Packet rpsMesoError(int mesos) { + OutPacket p = OutPacket.create(SendOpcode.RPS_GAME); + p.writeByte(0x06); if (mesos != -1) { - mplew.writeInt(mesos); + p.writeInt(mesos); } - return mplew.getPacket(); + return p; } - public static byte[] rpsSelection(byte selection, byte answer) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.RPS_GAME.getValue()); - mplew.write(0x0B);// 11l - mplew.write(selection); - mplew.write(answer); - return mplew.getPacket(); + public static Packet rpsSelection(byte selection, byte answer) { + OutPacket p = OutPacket.create(SendOpcode.RPS_GAME); + p.writeByte(0x0B);// 11l + p.writeByte(selection); + p.writeByte(answer); + return p; } - public static byte[] rpsMode(byte mode) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.RPS_GAME.getValue()); - mplew.write(mode); - return mplew.getPacket(); + public static Packet rpsMode(byte mode) { + OutPacket p = OutPacket.create(SendOpcode.RPS_GAME); + p.writeByte(mode); + return p; } - public static byte[] fredrickMessage(byte operation) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FREDRICK_MESSAGE.getValue()); - mplew.write(operation); - return mplew.getPacket(); + public static Packet fredrickMessage(byte operation) { + final OutPacket p = OutPacket.create(SendOpcode.FREDRICK_MESSAGE); + p.writeByte(operation); + return p; } - public static byte[] getFredrick(byte op) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FREDRICK.getValue()); - mplew.write(op); + public static Packet getFredrick(byte op) { + final OutPacket p = OutPacket.create(SendOpcode.FREDRICK); + p.writeByte(op); switch (op) { case 0x24: - mplew.skip(8); + p.skip(8); break; default: - mplew.write(0); + p.writeByte(0); break; } - return mplew.getPacket(); + return p; } - public static byte[] getFredrick(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FREDRICK.getValue()); - mplew.write(0x23); - mplew.writeInt(9030000); // Fredrick - mplew.writeInt(32272); //id - mplew.skip(5); - mplew.writeInt(chr.getMerchantNetMeso()); - mplew.write(0); + public static Packet getFredrick(MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.FREDRICK); + p.writeByte(0x23); + p.writeInt(9030000); // Fredrick + p.writeInt(32272); //id + p.skip(5); + p.writeInt(chr.getMerchantNetMeso()); + p.writeByte(0); try { List> items = ItemFactory.MERCHANT.loadItems(chr.getId(), false); - mplew.write(items.size()); + p.writeByte(items.size()); for (Pair item : items) { - addItemInfo(mplew, item.getLeft(), true); + addItemInfo(p, item.getLeft(), true); } } catch (SQLException e) { e.printStackTrace(); } - mplew.skip(3); - return mplew.getPacket(); + p.skip(3); + return p; } - public static byte[] addOmokBox(MapleCharacter chr, int ammount, int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); - mplew.writeInt(chr.getId()); - addAnnounceBox(mplew, chr.getMiniGame(), ammount, type); - return mplew.getPacket(); + public static Packet addOmokBox(MapleCharacter chr, int amount, int type) { + OutPacket p = OutPacket.create(SendOpcode.UPDATE_CHAR_BOX); + p.writeInt(chr.getId()); + addAnnounceBox(p, chr.getMiniGame(), amount, type); + return p; } - public static byte[] addMatchCardBox(MapleCharacter chr, int ammount, int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); - mplew.writeInt(chr.getId()); - addAnnounceBox(mplew, chr.getMiniGame(), ammount, type); - return mplew.getPacket(); + public static Packet addMatchCardBox(MapleCharacter chr, int amount, int type) { + OutPacket p = OutPacket.create(SendOpcode.UPDATE_CHAR_BOX); + p.writeInt(chr.getId()); + addAnnounceBox(p, chr.getMiniGame(), amount, type); + return p; } - public static byte[] removeMinigameBox(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); - mplew.writeInt(chr.getId()); - mplew.write(0); - return mplew.getPacket(); + public static Packet removeMinigameBox(MapleCharacter chr) { + OutPacket p = OutPacket.create(SendOpcode.UPDATE_CHAR_BOX); + p.writeInt(chr.getId()); + p.writeByte(0); + return p; } - public static byte[] getPlayerShopChat(MapleCharacter chr, String chat, byte slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); - mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); - mplew.write(slot); - mplew.writeMapleAsciiString(chr.getName() + " : " + chat); - return mplew.getPacket(); + public static Packet getPlayerShopChat(MapleCharacter chr, String chat, byte slot) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.CHAT.getCode()); + p.writeByte(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + p.writeByte(slot); + p.writeString(chr.getName() + " : " + chat); + return p; } - public static byte[] getTradeChat(MapleCharacter chr, String chat, boolean owner) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); - mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); - mplew.write(owner ? 0 : 1); - mplew.writeMapleAsciiString(chr.getName() + " : " + chat); - return mplew.getPacket(); + public static Packet getTradeChat(MapleCharacter chr, String chat, boolean owner) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.CHAT.getCode()); + p.writeByte(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + p.writeByte(owner ? 0 : 1); + p.writeString(chr.getName() + " : " + chat); + return p; } - public static byte[] hiredMerchantBox() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT.getValue()); // header. - mplew.write(0x07); - return mplew.getPacket(); + public static Packet hiredMerchantBox() { + final OutPacket p = OutPacket.create(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT); // header. + p.writeByte(0x07); + return p; } // 0: Success @@ -5645,88 +4996,79 @@ public class PacketCreator { // 18: The owner of the store is currently undergoing store maintenance. Please try again in a bit. // 23: This can only be used inside the Free Market. // default: This character is unable to do it. - public static byte[] getOwlMessage(int msg) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - - mplew.writeShort(SendOpcode.SHOP_LINK_RESULT.getValue()); - mplew.write(msg); // depending on the byte sent, a different message is sent. - - return mplew.getPacket(); + public static Packet getOwlMessage(int msg) { + OutPacket p = OutPacket.create(SendOpcode.SHOP_LINK_RESULT); + p.writeByte(msg); // depending on the byte sent, a different message is sent. + return p; } - public static byte[] owlOfMinerva(MapleClient c, int itemid, List> hmsAvailable) { - byte itemType = ItemConstants.getInventoryType(itemid).getType(); + public static Packet owlOfMinerva(MapleClient c, int itemId, List> hmsAvailable) { + byte itemType = ItemConstants.getInventoryType(itemId).getType(); - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOP_SCANNER_RESULT.getValue()); // header. - mplew.write(6); - mplew.writeInt(0); - mplew.writeInt(itemid); - mplew.writeInt(hmsAvailable.size()); + OutPacket p = OutPacket.create(SendOpcode.SHOP_SCANNER_RESULT); + p.writeByte(6); + p.writeInt(0); + p.writeInt(itemId); + p.writeInt(hmsAvailable.size()); for (Pair hme : hmsAvailable) { MaplePlayerShopItem item = hme.getLeft(); AbstractMapleMapObject mo = hme.getRight(); - if (mo instanceof MaplePlayerShop) { - MaplePlayerShop ps = (MaplePlayerShop) mo; + if (mo instanceof MaplePlayerShop ps) { MapleCharacter owner = ps.getOwner(); - mplew.writeMapleAsciiString(owner.getName()); - mplew.writeInt(owner.getMapId()); - mplew.writeMapleAsciiString(ps.getDescription()); - mplew.writeInt(item.getBundles()); - mplew.writeInt(item.getItem().getQuantity()); - mplew.writeInt(item.getPrice()); - mplew.writeInt(owner.getId()); - mplew.write(owner.getClient().getChannel() - 1); + p.writeString(owner.getName()); + p.writeInt(owner.getMapId()); + p.writeString(ps.getDescription()); + p.writeInt(item.getBundles()); + p.writeInt(item.getItem().getQuantity()); + p.writeInt(item.getPrice()); + p.writeInt(owner.getId()); + p.writeByte(owner.getClient().getChannel() - 1); } else { MapleHiredMerchant hm = (MapleHiredMerchant) mo; - mplew.writeMapleAsciiString(hm.getOwner()); - mplew.writeInt(hm.getMapId()); - mplew.writeMapleAsciiString(hm.getDescription()); - mplew.writeInt(item.getBundles()); - mplew.writeInt(item.getItem().getQuantity()); - mplew.writeInt(item.getPrice()); - mplew.writeInt(hm.getOwnerId()); - mplew.write(hm.getChannel() - 1); + p.writeString(hm.getOwner()); + p.writeInt(hm.getMapId()); + p.writeString(hm.getDescription()); + p.writeInt(item.getBundles()); + p.writeInt(item.getItem().getQuantity()); + p.writeInt(item.getPrice()); + p.writeInt(hm.getOwnerId()); + p.writeByte(hm.getChannel() - 1); } - mplew.write(itemType); + p.writeByte(itemType); if (itemType == MapleInventoryType.EQUIP.getType()) { - addItemInfo(mplew, item.getItem(), true); + addItemInfo(p, item.getItem(), true); } } - return mplew.getPacket(); + return p; } - public static byte[] getOwlOpen(List owlLeaderboards) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - - mplew.writeShort(SendOpcode.SHOP_SCANNER_RESULT.getValue()); - mplew.write(7); - mplew.write(owlLeaderboards.size()); + public static Packet getOwlOpen(List owlLeaderboards) { + OutPacket p = OutPacket.create(SendOpcode.SHOP_SCANNER_RESULT); + p.writeByte(7); + p.writeByte(owlLeaderboards.size()); for (Integer i : owlLeaderboards) { - mplew.writeInt(i); + p.writeInt(i); } - return mplew.getPacket(); + return p; } - public static byte[] retrieveFirstMessage() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT.getValue()); // header. - mplew.write(0x09); - return mplew.getPacket(); + public static Packet retrieveFirstMessage() { + final OutPacket p = OutPacket.create(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT); // header. + p.writeByte(0x09); + return p; } - public static byte[] remoteChannelChange(byte ch) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT.getValue()); // header. - mplew.write(0x10); - mplew.writeInt(0);//No idea yet - mplew.write(ch); - return mplew.getPacket(); + public static Packet remoteChannelChange(byte ch) { + final OutPacket p = OutPacket.create(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT); // header. + p.writeByte(0x10); + p.writeInt(0);//No idea yet + p.writeByte(ch); + return p; } /* * Possible things for ENTRUSTED_SHOP_CHECK_RESULT @@ -5736,198 +5078,185 @@ public class PacketCreator { * 0x12 = FKING POPUP LOL */ - public static byte[] getHiredMerchant(MapleCharacter chr, MapleHiredMerchant hm, boolean firstTime) {//Thanks Dustin - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); - mplew.write(0x05); - mplew.write(0x04); - mplew.writeShort(hm.getVisitorSlotThreadsafe(chr) + 1); - mplew.writeInt(hm.getItemId()); - mplew.writeMapleAsciiString("Hired Merchant"); + public static Packet getHiredMerchant(MapleCharacter chr, MapleHiredMerchant hm, boolean firstTime) {//Thanks Dustin + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode()); + p.writeByte(0x05); + p.writeByte(0x04); + p.writeShort(hm.getVisitorSlotThreadsafe(chr) + 1); + p.writeInt(hm.getItemId()); + p.writeString("Hired Merchant"); MapleCharacter[] visitors = hm.getVisitors(); for (int i = 0; i < 3; i++) { if (visitors[i] != null) { - mplew.write(i + 1); - addCharLook(mplew, visitors[i], false); - mplew.writeMapleAsciiString(visitors[i].getName()); + p.writeByte(i + 1); + addCharLook(p, visitors[i], false); + p.writeString(visitors[i].getName()); } } - mplew.write(-1); + p.writeByte(-1); if (hm.isOwner(chr)) { List> msgList = hm.getMessages(); - mplew.writeShort(msgList.size()); + p.writeShort(msgList.size()); for (Pair stringBytePair : msgList) { - mplew.writeMapleAsciiString(stringBytePair.getLeft()); - mplew.write(stringBytePair.getRight()); + p.writeString(stringBytePair.getLeft()); + p.writeByte(stringBytePair.getRight()); } } else { - mplew.writeShort(0); + p.writeShort(0); } - mplew.writeMapleAsciiString(hm.getOwner()); + p.writeString(hm.getOwner()); if (hm.isOwner(chr)) { - mplew.writeShort(0); - mplew.writeShort(hm.getTimeOpen()); - mplew.write(firstTime ? 1 : 0); + p.writeShort(0); + p.writeShort(hm.getTimeOpen()); + p.writeByte(firstTime ? 1 : 0); List sold = hm.getSold(); - mplew.write(sold.size()); + p.writeByte(sold.size()); for (MapleHiredMerchant.SoldItem s : sold) { - mplew.writeInt(s.getItemId()); - mplew.writeShort(s.getQuantity()); - mplew.writeInt(s.getMesos()); - mplew.writeMapleAsciiString(s.getBuyer()); + p.writeInt(s.getItemId()); + p.writeShort(s.getQuantity()); + p.writeInt(s.getMesos()); + p.writeString(s.getBuyer()); } - mplew.writeInt(chr.getMerchantMeso());//:D? + p.writeInt(chr.getMerchantMeso());//:D? } - mplew.writeMapleAsciiString(hm.getDescription()); - mplew.write(0x10); //TODO SLOTS, which is 16 for most stores...slotMax - mplew.writeInt(hm.isOwner(chr) ? chr.getMerchantMeso() : chr.getMeso()); - mplew.write(hm.getItems().size()); + p.writeString(hm.getDescription()); + p.writeByte(0x10); //TODO SLOTS, which is 16 for most stores...slotMax + p.writeInt(hm.isOwner(chr) ? chr.getMerchantMeso() : chr.getMeso()); + p.writeByte(hm.getItems().size()); if (hm.getItems().isEmpty()) { - mplew.write(0);//Hmm?? + p.writeByte(0);//Hmm?? } else { for (MaplePlayerShopItem item : hm.getItems()) { - mplew.writeShort(item.getBundles()); - mplew.writeShort(item.getItem().getQuantity()); - mplew.writeInt(item.getPrice()); - addItemInfo(mplew, item.getItem(), true); + p.writeShort(item.getBundles()); + p.writeShort(item.getItem().getQuantity()); + p.writeInt(item.getPrice()); + addItemInfo(p, item.getItem(), true); } } - return mplew.getPacket(); + return p; } - public static byte[] updateHiredMerchant(MapleHiredMerchant hm, MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode()); - mplew.writeInt(hm.isOwner(chr) ? chr.getMerchantMeso() : chr.getMeso()); - mplew.write(hm.getItems().size()); + public static Packet updateHiredMerchant(MapleHiredMerchant hm, MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode()); + p.writeInt(hm.isOwner(chr) ? chr.getMerchantMeso() : chr.getMeso()); + p.writeByte(hm.getItems().size()); for (MaplePlayerShopItem item : hm.getItems()) { - mplew.writeShort(item.getBundles()); - mplew.writeShort(item.getItem().getQuantity()); - mplew.writeInt(item.getPrice()); - addItemInfo(mplew, item.getItem(), true); + p.writeShort(item.getBundles()); + p.writeShort(item.getItem().getQuantity()); + p.writeInt(item.getPrice()); + addItemInfo(p, item.getItem(), true); } - return mplew.getPacket(); + return p; } - public static byte[] hiredMerchantChat(String message, byte slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); - mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); - mplew.write(slot); - mplew.writeMapleAsciiString(message); - return mplew.getPacket(); + public static Packet hiredMerchantChat(String message, byte slot) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.CHAT.getCode()); + p.writeByte(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + p.writeByte(slot); + p.writeString(message); + return p; } - public static byte[] hiredMerchantVisitorLeave(int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + public static Packet hiredMerchantVisitorLeave(int slot) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.EXIT.getCode()); if (slot != 0) { - mplew.write(slot); + p.writeByte(slot); } - return mplew.getPacket(); + return p; } - public static byte[] hiredMerchantOwnerLeave() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.REAL_CLOSE_MERCHANT.getCode()); - mplew.write(0); - return mplew.getPacket(); + public static Packet hiredMerchantOwnerLeave() { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.REAL_CLOSE_MERCHANT.getCode()); + p.writeByte(0); + return p; } - public static byte[] hiredMerchantOwnerMaintenanceLeave() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.REAL_CLOSE_MERCHANT.getCode()); - mplew.write(5); - return mplew.getPacket(); + public static Packet hiredMerchantOwnerMaintenanceLeave() { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.REAL_CLOSE_MERCHANT.getCode()); + p.writeByte(5); + return p; } - public static byte[] hiredMerchantMaintenanceMessage() { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); - mplew.write(0x00); - mplew.write(0x12); - return mplew.getPacket(); + public static Packet hiredMerchantMaintenanceMessage() { + OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode()); + p.writeByte(0x00); + p.writeByte(0x12); + return p; } - public static byte[] leaveHiredMerchant(int slot, int status2) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); - mplew.write(slot); - mplew.write(status2); - return mplew.getPacket(); + public static Packet leaveHiredMerchant(int slot, int status2) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.EXIT.getCode()); + p.writeByte(slot); + p.writeByte(status2); + return p; } - public static byte[] hiredMerchantVisitorAdd(MapleCharacter chr, int slot) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); - mplew.write(slot); - addCharLook(mplew, chr, false); - mplew.writeMapleAsciiString(chr.getName()); - return mplew.getPacket(); + public static Packet hiredMerchantVisitorAdd(MapleCharacter chr, int slot) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.VISIT.getCode()); + p.writeByte(slot); + addCharLook(p, chr, false); + p.writeString(chr.getName()); + return p; } - public static byte[] spawnHiredMerchantBox(MapleHiredMerchant hm) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_HIRED_MERCHANT.getValue()); - mplew.writeInt(hm.getOwnerId()); - mplew.writeInt(hm.getItemId()); - mplew.writeShort((short) hm.getPosition().getX()); - mplew.writeShort((short) hm.getPosition().getY()); - mplew.writeShort(0); - mplew.writeMapleAsciiString(hm.getOwner()); - mplew.write(0x05); - mplew.writeInt(hm.getObjectId()); - mplew.writeMapleAsciiString(hm.getDescription()); - mplew.write(hm.getItemId() % 100); - mplew.write(new byte[]{1, 4}); - return mplew.getPacket(); + public static Packet spawnHiredMerchantBox(MapleHiredMerchant hm) { + final OutPacket p = OutPacket.create(SendOpcode.SPAWN_HIRED_MERCHANT); + p.writeInt(hm.getOwnerId()); + p.writeInt(hm.getItemId()); + p.writeShort((short) hm.getPosition().getX()); + p.writeShort((short) hm.getPosition().getY()); + p.writeShort(0); + p.writeString(hm.getOwner()); + p.writeByte(0x05); + p.writeInt(hm.getObjectId()); + p.writeString(hm.getDescription()); + p.writeByte(hm.getItemId() % 100); + p.writeBytes(new byte[]{1, 4}); + return p; } - public static byte[] removeHiredMerchantBox(int id) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DESTROY_HIRED_MERCHANT.getValue()); - mplew.writeInt(id); - return mplew.getPacket(); + public static Packet removeHiredMerchantBox(int id) { + final OutPacket p = OutPacket.create(SendOpcode.DESTROY_HIRED_MERCHANT); + p.writeInt(id); + return p; } - public static byte[] spawnPlayerNPC(MaplePlayerNPC npc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER.getValue()); - mplew.write(1); - mplew.writeInt(npc.getObjectId()); - mplew.writeInt(npc.getScriptId()); - mplew.writeShort(npc.getPosition().x); - mplew.writeShort(npc.getCY()); - mplew.write(npc.getDirection()); - mplew.writeShort(npc.getFH()); - mplew.writeShort(npc.getRX0()); - mplew.writeShort(npc.getRX1()); - mplew.write(1); - return mplew.getPacket(); + public static Packet spawnPlayerNPC(MaplePlayerNPC npc) { + final OutPacket p = OutPacket.create(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER); + p.writeByte(1); + p.writeInt(npc.getObjectId()); + p.writeInt(npc.getScriptId()); + p.writeShort(npc.getPosition().x); + p.writeShort(npc.getCY()); + p.writeByte(npc.getDirection()); + p.writeShort(npc.getFH()); + p.writeShort(npc.getRX0()); + p.writeShort(npc.getRX1()); + p.writeByte(1); + return p; } - public static byte[] getPlayerNPC(MaplePlayerNPC npc) { // thanks to Arnah - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.IMITATED_NPC_DATA.getValue()); - mplew.write(0x01); - mplew.writeInt(npc.getScriptId()); - mplew.writeMapleAsciiString(npc.getName()); - mplew.write(npc.getGender()); - mplew.write(npc.getSkin()); - mplew.writeInt(npc.getFace()); - mplew.write(0); - mplew.writeInt(npc.getHair()); + public static Packet getPlayerNPC(MaplePlayerNPC npc) { // thanks to Arnah + final OutPacket p = OutPacket.create(SendOpcode.IMITATED_NPC_DATA); + p.writeByte(0x01); + p.writeInt(npc.getScriptId()); + p.writeString(npc.getName()); + p.writeByte(npc.getGender()); + p.writeByte(npc.getSkin()); + p.writeInt(npc.getFace()); + p.writeByte(0); + p.writeInt(npc.getHair()); Map equip = npc.getEquips(); Map myEquip = new LinkedHashMap<>(); Map maskedEquip = new LinkedHashMap<>(); @@ -5946,112 +5275,105 @@ public class PacketCreator { } } for (Entry entry : myEquip.entrySet()) { - mplew.write(entry.getKey()); - mplew.writeInt(entry.getValue()); + p.writeByte(entry.getKey()); + p.writeInt(entry.getValue()); } - mplew.write(0xFF); + p.writeByte(0xFF); for (Entry entry : maskedEquip.entrySet()) { - mplew.write(entry.getKey()); - mplew.writeInt(entry.getValue()); + p.writeByte(entry.getKey()); + p.writeInt(entry.getValue()); } - mplew.write(0xFF); + p.writeByte(0xFF); Integer cWeapon = equip.get((byte) -111); if (cWeapon != null) { - mplew.writeInt(cWeapon); + p.writeInt(cWeapon); } else { - mplew.writeInt(0); + p.writeInt(0); } for (int i = 0; i < 3; i++) { - mplew.writeInt(0); + p.writeInt(0); } - return mplew.getPacket(); + return p; } - public static byte[] removePlayerNPC(int oid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.IMITATED_NPC_DATA.getValue()); - mplew.write(0x00); - mplew.writeInt(oid); - - return mplew.getPacket(); + public static Packet removePlayerNPC(int oid) { + final OutPacket p = OutPacket.create(SendOpcode.IMITATED_NPC_DATA); + p.writeByte(0x00); + p.writeInt(oid); + return p; } - public static byte[] sendYellowTip(String tip) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SET_WEEK_EVENT_MESSAGE.getValue()); - mplew.write(0xFF); - mplew.writeMapleAsciiString(tip); - mplew.writeShort(0); - return mplew.getPacket(); + public static Packet sendYellowTip(String tip) { + final OutPacket p = OutPacket.create(SendOpcode.SET_WEEK_EVENT_MESSAGE); + p.writeByte(0xFF); + p.writeString(tip); + p.writeShort(0); + return p; } - public static byte[] givePirateBuff(List> statups, int buffid, int duration) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + public static Packet givePirateBuff(List> statups, int buffid, int duration) { + OutPacket p = OutPacket.create(SendOpcode.GIVE_BUFF); boolean infusion = buffid == Buccaneer.SPEED_INFUSION || buffid == ThunderBreaker.SPEED_INFUSION || buffid == Corsair.SPEED_INFUSION; - mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); - writeLongMask(mplew, statups); - mplew.writeShort(0); + writeLongMask(p, statups); + p.writeShort(0); for (Pair stat : statups) { - mplew.writeInt(stat.getRight().shortValue()); - mplew.writeInt(buffid); - mplew.skip(infusion ? 10 : 5); - mplew.writeShort(duration); + p.writeInt(stat.getRight().shortValue()); + p.writeInt(buffid); + p.skip(infusion ? 10 : 5); + p.writeShort(duration); } - mplew.skip(3); - return mplew.getPacket(); + p.skip(3); + return p; } - public static byte[] giveForeignPirateBuff(int cid, int buffid, int time, List> statups) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + public static Packet giveForeignPirateBuff(int cid, int buffid, int time, List> statups) { + OutPacket p = OutPacket.create(SendOpcode.GIVE_FOREIGN_BUFF); boolean infusion = buffid == Buccaneer.SPEED_INFUSION || buffid == ThunderBreaker.SPEED_INFUSION || buffid == Corsair.SPEED_INFUSION; - mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); - mplew.writeInt(cid); - writeLongMask(mplew, statups); - mplew.writeShort(0); + p.writeInt(cid); + writeLongMask(p, statups); + p.writeShort(0); for (Pair statup : statups) { - mplew.writeInt(statup.getRight().shortValue()); - mplew.writeInt(buffid); - mplew.skip(infusion ? 10 : 5); - mplew.writeShort(time); + p.writeInt(statup.getRight().shortValue()); + p.writeInt(buffid); + p.skip(infusion ? 10 : 5); + p.writeShort(time); } - mplew.writeShort(0); - mplew.write(2); - return mplew.getPacket(); + p.writeShort(0); + p.writeByte(2); + return p; } - public static byte[] sendMTS(List items, int tab, int type, int page, int pages) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x15); //operation - mplew.writeInt(pages * 16); //testing, change to 10 if fails - mplew.writeInt(items.size()); //number of items - mplew.writeInt(tab); - mplew.writeInt(type); - mplew.writeInt(page); - mplew.write(1); - mplew.write(1); + public static Packet sendMTS(List items, int tab, int type, int page, int pages) { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x15); //operation + p.writeInt(pages * 16); //testing, change to 10 if fails + p.writeInt(items.size()); //number of items + p.writeInt(tab); + p.writeInt(type); + p.writeInt(page); + p.writeByte(1); + p.writeByte(1); for (MTSItemInfo item : items) { - addItemInfo(mplew, item.getItem(), true); - mplew.writeInt(item.getID()); //id - mplew.writeInt(item.getTaxes()); //this + below = price - mplew.writeInt(item.getPrice()); //price - mplew.writeInt(0); - mplew.writeLong(getTime(item.getEndingDate())); - mplew.writeMapleAsciiString(item.getSeller()); //account name (what was nexon thinking?) - mplew.writeMapleAsciiString(item.getSeller()); //char name + addItemInfo(p, item.getItem(), true); + p.writeInt(item.getID()); //id + p.writeInt(item.getTaxes()); //this + below = price + p.writeInt(item.getPrice()); //price + p.writeInt(0); + p.writeLong(getTime(item.getEndingDate())); + p.writeString(item.getSeller()); //account name (what was nexon thinking?) + p.writeString(item.getSeller()); //char name for (int j = 0; j < 28; j++) { - mplew.write(0); + p.writeByte(0); } } - mplew.write(1); - return mplew.getPacket(); + p.writeByte(1); + return p; } - public static byte[] noteSendMsg() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.MEMO_RESULT.getValue()); - mplew.write(4); - return mplew.getPacket(); + public static Packet noteSendMsg() { + OutPacket p = OutPacket.create(SendOpcode.MEMO_RESULT); + p.writeByte(4); + return p; } /* @@ -6059,61 +5381,57 @@ public class PacketCreator { * 1 = Check player's name * 2 = Receiver inbox full */ - public static byte[] noteError(byte error) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.MEMO_RESULT.getValue()); - mplew.write(5); - mplew.write(error); - return mplew.getPacket(); + public static Packet noteError(byte error) { + OutPacket p = OutPacket.create(SendOpcode.MEMO_RESULT); + p.writeByte(5); + p.writeByte(error); + return p; } - public static byte[] showNotes(ResultSet notes, int count) throws SQLException { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MEMO_RESULT.getValue()); - mplew.write(3); - mplew.write(count); + public static Packet showNotes(ResultSet notes, int count) throws SQLException { + final OutPacket p = OutPacket.create(SendOpcode.MEMO_RESULT); + p.writeByte(3); + p.writeByte(count); for (int i = 0; i < count; i++) { - mplew.writeInt(notes.getInt("id")); - mplew.writeMapleAsciiString(notes.getString("from") + " ");//Stupid nexon forgot space lol - mplew.writeMapleAsciiString(notes.getString("message")); - mplew.writeLong(getTime(notes.getLong("timestamp"))); - mplew.write(notes.getByte("fame"));//FAME :D + p.writeInt(notes.getInt("id")); + p.writeString(notes.getString("from") + " ");//Stupid nexon forgot space lol + p.writeString(notes.getString("message")); + p.writeLong(getTime(notes.getLong("timestamp"))); + p.writeByte(notes.getByte("fame"));//FAME :D notes.next(); } - return mplew.getPacket(); + return p; } - public static byte[] useChalkboard(MapleCharacter chr, boolean close) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CHALKBOARD.getValue()); - mplew.writeInt(chr.getId()); + public static Packet useChalkboard(MapleCharacter chr, boolean close) { + OutPacket p = OutPacket.create(SendOpcode.CHALKBOARD); + p.writeInt(chr.getId()); if (close) { - mplew.write(0); + p.writeByte(0); } else { - mplew.write(1); - mplew.writeMapleAsciiString(chr.getChalkboard()); + p.writeByte(1); + p.writeString(chr.getChalkboard()); } - return mplew.getPacket(); + return p; } - public static byte[] trockRefreshMapList(MapleCharacter chr, boolean delete, boolean vip) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAP_TRANSFER_RESULT.getValue()); - mplew.write(delete ? 2 : 3); + public static Packet trockRefreshMapList(MapleCharacter chr, boolean delete, boolean vip) { + final OutPacket p = OutPacket.create(SendOpcode.MAP_TRANSFER_RESULT); + p.writeByte(delete ? 2 : 3); if (vip) { - mplew.write(1); + p.writeByte(1); List map = chr.getVipTrockMaps(); for (int i = 0; i < 10; i++) { - mplew.writeInt(map.get(i)); + p.writeInt(map.get(i)); } } else { - mplew.write(0); + p.writeByte(0); List map = chr.getTrockMaps(); for (int i = 0; i < 5; i++) { - mplew.writeInt(map.get(i)); + p.writeInt(map.get(i)); } } - return mplew.getPacket(); + return p; } /* 1: cannot find char info, @@ -6126,29 +5444,27 @@ public class PacketCreator { 8: must quit family, 9: unknown error */ - public static byte[] sendWorldTransferRules(int error, MapleClient c) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_CHECK_TRANSFER_WORLD_POSSIBLE_RESULT.getValue()); - mplew.writeInt(0); //ignored - mplew.write(error); - mplew.writeInt(0); - mplew.writeBool(error == 0); //0 = ?, otherwise list servers + public static Packet sendWorldTransferRules(int error, MapleClient c) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_CHECK_TRANSFER_WORLD_POSSIBLE_RESULT); + p.writeInt(0); //ignored + p.writeByte(error); + p.writeInt(0); + p.writeBool(error == 0); //0 = ?, otherwise list servers if (error == 0) { List worlds = Server.getInstance().getWorlds(); - mplew.writeInt(worlds.size()); + p.writeInt(worlds.size()); for (World world : worlds) { - mplew.writeMapleAsciiString(GameConstants.WORLD_NAMES[world.getId()]); + p.writeString(GameConstants.WORLD_NAMES[world.getId()]); } } - return mplew.getPacket(); + return p; } - public static byte[] showWorldTransferSuccess(Item item, int accountId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - mplew.write(0xA0); - addCashItemInformation(mplew, item, accountId); - return mplew.getPacket(); + public static Packet showWorldTransferSuccess(Item item, int accountId) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0xA0); + addCashItemInformation(p, item, accountId); + return p; } /* 0: no error, send rules @@ -6157,14 +5473,13 @@ public class PacketCreator { 3: recently banned 4: unknown error */ - public static byte[] sendNameTransferRules(int error) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE_POSSIBLE_RESULT.getValue()); - mplew.writeInt(0); - mplew.write(error); - mplew.writeInt(0); + public static Packet sendNameTransferRules(int error) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE_POSSIBLE_RESULT); + p.writeInt(0); + p.writeByte(error); + p.writeInt(0); - return mplew.getPacket(); + return p; } /* 0: Name available @@ -6172,175 +5487,159 @@ public class PacketCreator { * <0: Unknown error */ - public static byte[] sendNameTransferCheck(String availableName, boolean canUseName) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE.getValue()); + public static Packet sendNameTransferCheck(String availableName, boolean canUseName) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE); //Send provided name back to client to add to temporary cache of checked & accepted names - mplew.writeMapleAsciiString(availableName); - mplew.writeBool(!canUseName); - return mplew.getPacket(); + p.writeString(availableName); + p.writeBool(!canUseName); + return p; } - public static byte[] showNameChangeSuccess(Item item, int accountId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - mplew.write(0x9E); - addCashItemInformation(mplew, item, accountId); - return mplew.getPacket(); + public static Packet showNameChangeSuccess(Item item, int accountId) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0x9E); + addCashItemInformation(p, item, accountId); + return p; } - public static byte[] showNameChangeCancel(boolean success) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_NAME_CHANGE_RESULT.getValue()); - mplew.writeBool(success); + public static Packet showNameChangeCancel(boolean success) { + OutPacket p = OutPacket.create(SendOpcode.CANCEL_NAME_CHANGE_RESULT); + p.writeBool(success); if (!success) { - mplew.write(0); + p.writeByte(0); } - //mplew.writeMapleAsciiString("Custom message."); //only if ^ != 0 - return mplew.getPacket(); + //p.writeString("Custom message."); //only if ^ != 0 + return p; } - public static byte[] showWorldTransferCancel(boolean success) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CANCEL_TRANSFER_WORLD_RESULT.getValue()); - mplew.writeBool(success); + public static Packet showWorldTransferCancel(boolean success) { + OutPacket p = OutPacket.create(SendOpcode.CANCEL_TRANSFER_WORLD_RESULT); + p.writeBool(success); if (!success) { - mplew.write(0); + p.writeByte(0); } - //mplew.writeMapleAsciiString("Custom message."); //only if ^ != 0 - return mplew.getPacket(); + //p.writeString("Custom message."); //only if ^ != 0 + return p; } - public static byte[] showMTSCash(MapleCharacter p) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION2.getValue()); - mplew.writeInt(p.getCashShop().getCash(4)); - mplew.writeInt(p.getCashShop().getCash(2)); - return mplew.getPacket(); + public static Packet showMTSCash(MapleCharacter chr) { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION2); + p.writeInt(chr.getCashShop().getCash(4)); + p.writeInt(chr.getCashShop().getCash(2)); + return p; } - public static byte[] MTSWantedListingOver(int nx, int items) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x3D); - mplew.writeInt(nx); - mplew.writeInt(items); - return mplew.getPacket(); + public static Packet MTSWantedListingOver(int nx, int items) { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x3D); + p.writeInt(nx); + p.writeInt(items); + return p; } - public static byte[] MTSConfirmSell() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x1D); - return mplew.getPacket(); + public static Packet MTSConfirmSell() { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x1D); + return p; } - public static byte[] MTSConfirmBuy() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x33); - return mplew.getPacket(); + public static Packet MTSConfirmBuy() { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x33); + return p; } - public static byte[] MTSFailBuy() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x34); - mplew.write(0x42); - return mplew.getPacket(); + public static Packet MTSFailBuy() { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x34); + p.writeByte(0x42); + return p; } - public static byte[] MTSConfirmTransfer(int quantity, int pos) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x27); - mplew.writeInt(quantity); - mplew.writeInt(pos); - return mplew.getPacket(); + public static Packet MTSConfirmTransfer(int quantity, int pos) { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x27); + p.writeInt(quantity); + p.writeInt(pos); + return p; } - public static byte[] notYetSoldInv(List items) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x23); - mplew.writeInt(items.size()); + public static Packet notYetSoldInv(List items) { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x23); + p.writeInt(items.size()); if (!items.isEmpty()) { for (MTSItemInfo item : items) { - addItemInfo(mplew, item.getItem(), true); - mplew.writeInt(item.getID()); //id - mplew.writeInt(item.getTaxes()); //this + below = price - mplew.writeInt(item.getPrice()); //price - mplew.writeInt(0); - mplew.writeLong(getTime(item.getEndingDate())); - mplew.writeMapleAsciiString(item.getSeller()); //account name (what was nexon thinking?) - mplew.writeMapleAsciiString(item.getSeller()); //char name + addItemInfo(p, item.getItem(), true); + p.writeInt(item.getID()); //id + p.writeInt(item.getTaxes()); //this + below = price + p.writeInt(item.getPrice()); //price + p.writeInt(0); + p.writeLong(getTime(item.getEndingDate())); + p.writeString(item.getSeller()); //account name (what was nexon thinking?) + p.writeString(item.getSeller()); //char name for (int i = 0; i < 28; i++) { - mplew.write(0); + p.writeByte(0); } } } else { - mplew.writeInt(0); + p.writeInt(0); } - return mplew.getPacket(); + return p; } - public static byte[] transferInventory(List items) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); - mplew.write(0x21); - mplew.writeInt(items.size()); + public static Packet transferInventory(List items) { + final OutPacket p = OutPacket.create(SendOpcode.MTS_OPERATION); + p.writeByte(0x21); + p.writeInt(items.size()); if (!items.isEmpty()) { for (MTSItemInfo item : items) { - addItemInfo(mplew, item.getItem(), true); - mplew.writeInt(item.getID()); //id - mplew.writeInt(item.getTaxes()); //taxes - mplew.writeInt(item.getPrice()); //price - mplew.writeInt(0); - mplew.writeLong(getTime(item.getEndingDate())); - mplew.writeMapleAsciiString(item.getSeller()); //account name (what was nexon thinking?) - mplew.writeMapleAsciiString(item.getSeller()); //char name + addItemInfo(p, item.getItem(), true); + p.writeInt(item.getID()); //id + p.writeInt(item.getTaxes()); //taxes + p.writeInt(item.getPrice()); //price + p.writeInt(0); + p.writeLong(getTime(item.getEndingDate())); + p.writeString(item.getSeller()); //account name (what was nexon thinking?) + p.writeString(item.getSeller()); //char name for (int i = 0; i < 28; i++) { - mplew.write(0); + p.writeByte(0); } } } - mplew.write(0xD0 + items.size()); - mplew.write(new byte[]{-1, -1, -1, 0}); - return mplew.getPacket(); + p.writeByte(0xD0 + items.size()); + p.writeBytes(new byte[]{-1, -1, -1, 0}); + return p; } - public static byte[] showCouponRedeemedItems(int accountId, int maplePoints, int mesos, List cashItems, List> items) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - mplew.write(0x59); - mplew.write((byte) cashItems.size()); + public static Packet showCouponRedeemedItems(int accountId, int maplePoints, int mesos, List cashItems, List> items) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0x59); + p.writeByte((byte) cashItems.size()); for (Item item : cashItems) { - addCashItemInformation(mplew, item, accountId); + addCashItemInformation(p, item, accountId); } - mplew.writeInt(maplePoints); - mplew.writeInt(items.size()); + p.writeInt(maplePoints); + p.writeInt(items.size()); for (Pair itemPair : items) { int quantity = itemPair.getLeft(); - mplew.writeShort((short) quantity); //quantity (0 = 1 for cash items) - mplew.writeShort(0x1F); //0 = ?, >=0x20 = ?, <0x20 = ? (does nothing?) - mplew.writeInt(itemPair.getRight()); + p.writeShort((short) quantity); //quantity (0 = 1 for cash items) + p.writeShort(0x1F); //0 = ?, >=0x20 = ?, <0x20 = ? (does nothing?) + p.writeInt(itemPair.getRight()); } - mplew.writeInt(mesos); - return mplew.getPacket(); + p.writeInt(mesos); + return p; } - public static byte[] showCash(MapleCharacter mc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.QUERY_CASH_RESULT.getValue()); - - mplew.writeInt(mc.getCashShop().getCash(1)); - mplew.writeInt(mc.getCashShop().getCash(2)); - mplew.writeInt(mc.getCashShop().getCash(4)); - - return mplew.getPacket(); + public static Packet showCash(MapleCharacter mc) { + final OutPacket p = OutPacket.create(SendOpcode.QUERY_CASH_RESULT); + p.writeInt(mc.getCashShop().getCash(1)); + p.writeInt(mc.getCashShop().getCash(2)); + p.writeInt(mc.getCashShop().getCash(4)); + return p; } - public static byte[] enableCSUse(MapleCharacter mc) { + public static Packet enableCSUse(MapleCharacter mc) { return showCash(mc); } @@ -6364,112 +5663,98 @@ public class PacketCreator { * @param flag LOCATION or LOCATION_FRIEND * @return packet structure */ - public static byte[] getFindResult(MapleCharacter target, byte type, int fieldOrChannel, byte flag) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.WHISPER.getValue()); + public static Packet getFindResult(MapleCharacter target, byte type, int fieldOrChannel, byte flag) { + OutPacket p = OutPacket.create(SendOpcode.WHISPER); - mplew.write(flag | WhisperFlag.RESULT); - mplew.writeMapleAsciiString(target.getName()); - mplew.write(type); - mplew.writeInt(fieldOrChannel); + p.writeByte(flag | WhisperFlag.RESULT); + p.writeString(target.getName()); + p.writeByte(type); + p.writeInt(fieldOrChannel); if (type == WhisperHandler.RT_SAME_CHANNEL) { - mplew.writeInt(target.getPosition().x); - mplew.writeInt(target.getPosition().y); + p.writeInt(target.getPosition().x); + p.writeInt(target.getPosition().y); } - return mplew.getPacket(); + return p; } - public static byte[] getWhisperResult(String target, boolean success) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.WHISPER.getValue()); - - mplew.write(WhisperFlag.WHISPER | WhisperFlag.RESULT); - mplew.writeMapleAsciiString(target); - mplew.writeBool(success); - - return mplew.getPacket(); + public static Packet getWhisperResult(String target, boolean success) { + OutPacket p = OutPacket.create(SendOpcode.WHISPER); + p.writeByte(WhisperFlag.WHISPER | WhisperFlag.RESULT); + p.writeString(target); + p.writeBool(success); + return p; } - public static byte[] getWhisperReceive(String sender, int channel, boolean fromAdmin, String message) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.WHISPER.getValue()); - - mplew.write(WhisperFlag.WHISPER | WhisperFlag.RECEIVE); - mplew.writeMapleAsciiString(sender); - mplew.write(channel); - mplew.writeBool(fromAdmin); - mplew.writeMapleAsciiString(message); - - return mplew.getPacket(); + public static Packet getWhisperReceive(String sender, int channel, boolean fromAdmin, String message) { + OutPacket p = OutPacket.create(SendOpcode.WHISPER); + p.writeByte(WhisperFlag.WHISPER | WhisperFlag.RECEIVE); + p.writeString(sender); + p.writeByte(channel); + p.writeBool(fromAdmin); + p.writeString(message); + return p; } - public static byte[] sendAutoHpPot(int itemId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.AUTO_HP_POT.getValue()); - mplew.writeInt(itemId); - return mplew.getPacket(); + public static Packet sendAutoHpPot(int itemId) { + final OutPacket p = OutPacket.create(SendOpcode.AUTO_HP_POT); + p.writeInt(itemId); + return p; } - public static byte[] sendAutoMpPot(int itemId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.AUTO_MP_POT.getValue()); - mplew.writeInt(itemId); - return mplew.getPacket(); + public static Packet sendAutoMpPot(int itemId) { + OutPacket p = OutPacket.create(SendOpcode.AUTO_MP_POT); + p.writeInt(itemId); + return p; } - public static byte[] showOXQuiz(int questionSet, int questionId, boolean askQuestion) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.OX_QUIZ.getValue()); - mplew.write(askQuestion ? 1 : 0); - mplew.write(questionSet); - mplew.writeShort(questionId); - return mplew.getPacket(); + public static Packet showOXQuiz(int questionSet, int questionId, boolean askQuestion) { + OutPacket p = OutPacket.create(SendOpcode.OX_QUIZ); + p.writeByte(askQuestion ? 1 : 0); + p.writeByte(questionSet); + p.writeShort(questionId); + return p; } - public static byte[] updateGender(MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.SET_GENDER.getValue()); - mplew.write(chr.getGender()); - return mplew.getPacket(); + public static Packet updateGender(MapleCharacter chr) { + OutPacket p = OutPacket.create(SendOpcode.SET_GENDER); + p.writeByte(chr.getGender()); + return p; } - public static byte[] enableReport() { // thanks to snow - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.CLAIM_STATUS_CHANGED.getValue()); - mplew.write(1); - return mplew.getPacket(); + public static Packet enableReport() { // thanks to snow + OutPacket p = OutPacket.create(SendOpcode.CLAIM_STATUS_CHANGED); + p.writeByte(1); + return p; } - public static byte[] giveFinalAttack(int skillid, int time) { // packets found thanks to lailainoob - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); - mplew.writeLong(0); - mplew.writeShort(0); - mplew.write(0);//some 80 and 0 bs DIRECTION - mplew.write(0x80);//let's just do 80, then 0 - mplew.writeInt(0); - mplew.writeShort(1); - mplew.writeInt(skillid); - mplew.writeInt(time); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet giveFinalAttack(int skillid, int time) { // packets found thanks to lailainoob + final OutPacket p = OutPacket.create(SendOpcode.GIVE_BUFF); + p.writeLong(0); + p.writeShort(0); + p.writeByte(0);//some 80 and 0 bs DIRECTION + p.writeByte(0x80);//let's just do 80, then 0 + p.writeInt(0); + p.writeShort(1); + p.writeInt(skillid); + p.writeInt(time); + p.writeInt(0); + return p; } - public static byte[] loadFamily(MapleCharacter player) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_PRIVILEGE_LIST.getValue()); - mplew.writeInt(MapleFamilyEntitlement.values().length); + public static Packet loadFamily(MapleCharacter player) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_PRIVILEGE_LIST); + p.writeInt(MapleFamilyEntitlement.values().length); for (int i = 0; i < MapleFamilyEntitlement.values().length; i++) { MapleFamilyEntitlement entitlement = MapleFamilyEntitlement.values()[i]; - mplew.write(i <= 1 ? 1 : 2); //type - mplew.writeInt(entitlement.getRepCost()); - mplew.writeInt(entitlement.getUsageLimit()); - mplew.writeMapleAsciiString(entitlement.getName()); - mplew.writeMapleAsciiString(entitlement.getDescription()); + p.writeByte(i <= 1 ? 1 : 2); //type + p.writeInt(entitlement.getRepCost()); + p.writeInt(entitlement.getUsageLimit()); + p.writeString(entitlement.getName()); + p.writeString(entitlement.getDescription()); } - return mplew.getPacket(); + return p; } /** @@ -6507,57 +5792,54 @@ public class PacketCreator { * @param type The type * @return Family Result packet */ - public static byte[] sendFamilyMessage(int type, int mesos) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.FAMILY_RESULT.getValue()); - mplew.writeInt(type); - mplew.writeInt(mesos); - return mplew.getPacket(); + public static Packet sendFamilyMessage(int type, int mesos) { + OutPacket p = OutPacket.create(SendOpcode.FAMILY_RESULT); + p.writeInt(type); + p.writeInt(mesos); + return p; } - public static byte[] getFamilyInfo(MapleFamilyEntry f) { - if (f == null) { - return getEmptyFamilyInfo(); - } - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_INFO_RESULT.getValue()); - mplew.writeInt(f.getReputation()); // cur rep left - mplew.writeInt(f.getTotalReputation()); // tot rep left - mplew.writeInt(f.getTodaysRep()); // todays rep - mplew.writeShort(f.getJuniorCount()); // juniors added - mplew.writeShort(2); // juniors allowed - mplew.writeShort(0); //Unknown - mplew.writeInt(f.getFamily().getLeader().getChrId()); // Leader ID (Allows setting message) - mplew.writeMapleAsciiString(f.getFamily().getName()); - mplew.writeMapleAsciiString(f.getFamily().getMessage()); //family message - mplew.writeInt(MapleFamilyEntitlement.values().length); //Entitlement info count - for (MapleFamilyEntitlement entitlement : MapleFamilyEntitlement.values()) { - mplew.writeInt(entitlement.ordinal()); //ID - mplew.writeInt(f.isEntitlementUsed(entitlement) ? 1 : 0); //Used count + public static Packet getFamilyInfo(MapleFamilyEntry f) { + if (f == null) { + return getEmptyFamilyInfo(); } - return mplew.getPacket(); + + OutPacket p = OutPacket.create(SendOpcode.FAMILY_INFO_RESULT); + p.writeInt(f.getReputation()); // cur rep left + p.writeInt(f.getTotalReputation()); // tot rep left + p.writeInt(f.getTodaysRep()); // todays rep + p.writeShort(f.getJuniorCount()); // juniors added + p.writeShort(2); // juniors allowed + p.writeShort(0); //Unknown + p.writeInt(f.getFamily().getLeader().getChrId()); // Leader ID (Allows setting message) + p.writeString(f.getFamily().getName()); + p.writeString(f.getFamily().getMessage()); //family message + p.writeInt(MapleFamilyEntitlement.values().length); //Entitlement info count + for (MapleFamilyEntitlement entitlement : MapleFamilyEntitlement.values()) { + p.writeInt(entitlement.ordinal()); //ID + p.writeInt(f.isEntitlementUsed(entitlement) ? 1 : 0); //Used count + } + return p; } - private static byte[] getEmptyFamilyInfo() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_INFO_RESULT.getValue()); - mplew.writeInt(0); // cur rep left - mplew.writeInt(0); // tot rep left - mplew.writeInt(0); // todays rep - mplew.writeShort(0); // juniors added - mplew.writeShort(2); // juniors allowed - mplew.writeShort(0); //Unknown - mplew.writeInt(0); // Leader ID (Allows setting message) - mplew.writeMapleAsciiString(""); - mplew.writeMapleAsciiString(""); //family message - mplew.writeInt(0); - return mplew.getPacket(); + private static Packet getEmptyFamilyInfo() { + OutPacket p = OutPacket.create(SendOpcode.FAMILY_INFO_RESULT); + p.writeInt(0); // cur rep left + p.writeInt(0); // tot rep left + p.writeInt(0); // todays rep + p.writeShort(0); // juniors added + p.writeShort(2); // juniors allowed + p.writeShort(0); //Unknown + p.writeInt(0); // Leader ID (Allows setting message) + p.writeString(""); + p.writeString(""); //family message + p.writeInt(0); + return p; } - public static byte[] showPedigree(MapleFamilyEntry entry) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_CHART_RESULT.getValue()); - mplew.writeInt(entry.getChrId()); //ID of viewed player's pedigree, can't be leader? + public static Packet showPedigree(MapleFamilyEntry entry) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_CHART_RESULT); + p.writeInt(entry.getChrId()); //ID of viewed player's pedigree, can't be leader? List superJuniors = new ArrayList<>(4); boolean hasOtherJunior = false; int entryCount = 2; //2 guaranteed, leader and self @@ -6584,160 +5866,154 @@ public class PacketCreator { } //write entries boolean missingEntries = entryCount == 2; //pedigree requires at least 3 entries to show leader, might only have 2 if leader's juniors leave - if (missingEntries) { - entryCount++; - } - mplew.writeInt(entryCount); //player count - addPedigreeEntry(mplew, entry.getFamily().getLeader()); - if (entry.getSenior() != null) { - if (entry.getSenior().getSenior() != null) { - addPedigreeEntry(mplew, entry.getSenior().getSenior()); - } - addPedigreeEntry(mplew, entry.getSenior()); + if (missingEntries) { + entryCount++; } - addPedigreeEntry(mplew, entry); + p.writeInt(entryCount); //player count + addPedigreeEntry(p, entry.getFamily().getLeader()); + if (entry.getSenior() != null) { + if (entry.getSenior().getSenior() != null) { + addPedigreeEntry(p, entry.getSenior().getSenior()); + } + addPedigreeEntry(p, entry.getSenior()); + } + addPedigreeEntry(p, entry); if (hasOtherJunior) { //must be sent after own entry MapleFamilyEntry otherJunior = entry.getSenior().getOtherJunior(entry); - if (otherJunior != null) { - addPedigreeEntry(mplew, otherJunior); - } - } - if (missingEntries) { - addPedigreeEntry(mplew, entry); + if (otherJunior != null) { + addPedigreeEntry(p, otherJunior); } + } + if (missingEntries) { + addPedigreeEntry(p, entry); + } for (MapleFamilyEntry junior : entry.getJuniors()) { - if (junior == null) { - continue; - } - addPedigreeEntry(mplew, junior); + if (junior == null) { + continue; + } + addPedigreeEntry(p, junior); for (MapleFamilyEntry superJunior : junior.getJuniors()) { - if (superJunior != null) { - addPedigreeEntry(mplew, superJunior); - } + if (superJunior != null) { + addPedigreeEntry(p, superJunior); + } } } - mplew.writeInt(2 + superJuniors.size()); //member info count + p.writeInt(2 + superJuniors.size()); //member info count // 0 = total seniors, -1 = total members, otherwise junior count of ID - mplew.writeInt(-1); - mplew.writeInt(entry.getFamily().getTotalMembers()); - mplew.writeInt(0); - mplew.writeInt(entry.getTotalSeniors()); //client subtracts provided seniors + p.writeInt(-1); + p.writeInt(entry.getFamily().getTotalMembers()); + p.writeInt(0); + p.writeInt(entry.getTotalSeniors()); //client subtracts provided seniors for (MapleFamilyEntry superJunior : superJuniors) { - mplew.writeInt(superJunior.getChrId()); - mplew.writeInt(superJunior.getTotalJuniors()); + p.writeInt(superJunior.getChrId()); + p.writeInt(superJunior.getTotalJuniors()); } - mplew.writeInt(0); //another loop count (entitlements used) - //mplew.writeInt(1); //entitlement index - //mplew.writeInt(2); //times used - mplew.writeShort(entry.getJuniorCount() >= 2 ? 0 : 2); //0 disables Add button (only if viewing own pedigree) - return mplew.getPacket(); + p.writeInt(0); //another loop count (entitlements used) + //p.writeInt(1); //entitlement index + //p.writeInt(2); //times used + p.writeShort(entry.getJuniorCount() >= 2 ? 0 : 2); //0 disables Add button (only if viewing own pedigree) + return p; } - private static void addPedigreeEntry(MaplePacketLittleEndianWriter mplew, MapleFamilyEntry entry) { + private static void addPedigreeEntry(OutPacket p, MapleFamilyEntry entry) { MapleCharacter chr = entry.getChr(); boolean isOnline = chr != null; - mplew.writeInt(entry.getChrId()); //ID - mplew.writeInt(entry.getSenior() != null ? entry.getSenior().getChrId() : 0); //parent ID - mplew.writeShort(entry.getJob().getId()); //job id - mplew.write(entry.getLevel()); //level - mplew.writeBool(isOnline); //isOnline - mplew.writeInt(entry.getReputation()); //current rep - mplew.writeInt(entry.getTotalReputation()); //total rep - mplew.writeInt(entry.getRepsToSenior()); //reps recorded to senior - mplew.writeInt(entry.getTodaysRep()); - mplew.writeInt(isOnline ? ((chr.isAwayFromWorld() || chr.getCashShop().isOpened()) ? -1 : chr.getClient().getChannel() - 1) : 0); - mplew.writeInt(isOnline ? (int) (chr.getLoggedInTime() / 60000) : 0); //time online in minutes - mplew.writeMapleAsciiString(entry.getName()); //name + p.writeInt(entry.getChrId()); //ID + p.writeInt(entry.getSenior() != null ? entry.getSenior().getChrId() : 0); //parent ID + p.writeShort(entry.getJob().getId()); //job id + p.writeByte(entry.getLevel()); //level + p.writeBool(isOnline); //isOnline + p.writeInt(entry.getReputation()); //current rep + p.writeInt(entry.getTotalReputation()); //total rep + p.writeInt(entry.getRepsToSenior()); //reps recorded to senior + p.writeInt(entry.getTodaysRep()); + p.writeInt(isOnline ? ((chr.isAwayFromWorld() || chr.getCashShop().isOpened()) ? -1 : chr.getClient().getChannel() - 1) : 0); + p.writeInt(isOnline ? (int) (chr.getLoggedInTime() / 60000) : 0); //time online in minutes + p.writeString(entry.getName()); //name } - public static byte[] updateAreaInfo(int area, String info) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(0x0A); //0x0B in v95 - mplew.writeShort(area);//infoNumber - mplew.writeMapleAsciiString(info); - return mplew.getPacket(); + public static Packet updateAreaInfo(int area, String info) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(0x0A); //0x0B in v95 + p.writeShort(area);//infoNumber + p.writeString(info); + return p; } - public static byte[] getGPMessage(int gpChange) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(6); - mplew.writeInt(gpChange); - return mplew.getPacket(); + public static Packet getGPMessage(int gpChange) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(6); + p.writeInt(gpChange); + return p; } - public static byte[] getItemMessage(int itemid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(7); - mplew.writeInt(itemid); - return mplew.getPacket(); + public static Packet getItemMessage(int itemid) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(7); + p.writeInt(itemid); + return p; } - public static byte[] addCard(boolean full, int cardid, int level) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); - mplew.writeShort(SendOpcode.MONSTER_BOOK_SET_CARD.getValue()); - mplew.write(full ? 0 : 1); - mplew.writeInt(cardid); - mplew.writeInt(level); - return mplew.getPacket(); + public static Packet addCard(boolean full, int cardid, int level) { + OutPacket p = OutPacket.create(SendOpcode.MONSTER_BOOK_SET_CARD); + p.writeByte(full ? 0 : 1); + p.writeInt(cardid); + p.writeInt(level); + return p; } - public static byte[] showGainCard() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(0x0D); - return mplew.getPacket(); + public static Packet showGainCard() { + OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(0x0D); + return p; } - public static byte[] showForeignCardEffect(int id) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(id); - mplew.write(0x0D); - return mplew.getPacket(); + public static Packet showForeignCardEffect(int id) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(id); + p.writeByte(0x0D); + return p; } - public static byte[] changeCover(int cardid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.MONSTER_BOOK_SET_COVER.getValue()); - mplew.writeInt(cardid); - return mplew.getPacket(); + public static Packet changeCover(int cardid) { + OutPacket p = OutPacket.create(SendOpcode.MONSTER_BOOK_SET_COVER); + p.writeInt(cardid); + return p; } - public static byte[] aranGodlyStats() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FORCED_STAT_SET.getValue()); - mplew.write(new byte[]{(byte) 0x1F, (byte) 0x0F, 0, 0, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0xFF, 0, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0x78, (byte) 0x8C}); - return mplew.getPacket(); + public static Packet aranGodlyStats() { + OutPacket p = OutPacket.create(SendOpcode.FORCED_STAT_SET); + p.writeBytes(new byte[]{ + (byte) 0x1F, (byte) 0x0F, 0, 0, + (byte) 0xE7, 3, (byte) 0xE7, 3, + (byte) 0xE7, 3, (byte) 0xE7, 3, + (byte) 0xFF, 0, (byte) 0xE7, 3, + (byte) 0xE7, 3, (byte) 0x78, (byte) 0x8C}); + return p; } - public static byte[] showIntro(String path) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(0x12); - mplew.writeMapleAsciiString(path); - return mplew.getPacket(); + public static Packet showIntro(String path) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(0x12); + p.writeString(path); + return p; } - public static byte[] showInfo(String path) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(0x17); - mplew.writeMapleAsciiString(path); - mplew.writeInt(1); - return mplew.getPacket(); + public static Packet showInfo(String path) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(0x17); + p.writeString(path); + p.writeInt(1); + return p; } - public static byte[] showForeignInfo(int cid, String path) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(0x17); - mplew.writeMapleAsciiString(path); - mplew.writeInt(1); - return mplew.getPacket(); + public static Packet showForeignInfo(int cid, String path) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(cid); + p.writeByte(0x17); + p.writeString(path); + p.writeInt(1); + return p; } /** @@ -6753,59 +6029,50 @@ public class PacketCreator { * @param ui * @return */ - public static byte[] openUI(byte ui) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.OPEN_UI.getValue()); - mplew.write(ui); - return mplew.getPacket(); + public static Packet openUI(byte ui) { + OutPacket p = OutPacket.create(SendOpcode.OPEN_UI); + p.writeByte(ui); + return p; } - public static byte[] lockUI(boolean enable) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.LOCK_UI.getValue()); - mplew.write(enable ? 1 : 0); - return mplew.getPacket(); + public static Packet lockUI(boolean enable) { + OutPacket p = OutPacket.create(SendOpcode.LOCK_UI); + p.writeByte(enable ? 1 : 0); + return p; } - public static byte[] disableUI(boolean enable) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DISABLE_UI.getValue()); - mplew.write(enable ? 1 : 0); - return mplew.getPacket(); + public static Packet disableUI(boolean enable) { + final OutPacket p = OutPacket.create(SendOpcode.DISABLE_UI); + p.writeByte(enable ? 1 : 0); + return p; } - public static byte[] itemMegaphone(String msg, boolean whisper, int channel, Item item) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); - mplew.write(8); - mplew.writeMapleAsciiString(msg); - mplew.write(channel - 1); - mplew.write(whisper ? 1 : 0); + public static Packet itemMegaphone(String msg, boolean whisper, int channel, Item item) { + final OutPacket p = OutPacket.create(SendOpcode.SERVERMESSAGE); + p.writeByte(8); + p.writeString(msg); + p.writeByte(channel - 1); + p.writeByte(whisper ? 1 : 0); if (item == null) { - mplew.write(0); + p.writeByte(0); } else { - mplew.write(item.getPosition()); - addItemInfo(mplew, item, true); + p.writeByte(item.getPosition()); + addItemInfo(p, item, true); } - return mplew.getPacket(); + return p; } - public static byte[] removeNPC(int oid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.REMOVE_NPC.getValue()); - mplew.writeInt(oid); - - return mplew.getPacket(); + public static Packet removeNPC(int objId) { + OutPacket p = OutPacket.create(SendOpcode.REMOVE_NPC); + p.writeInt(objId); + return p; } - public static byte[] removeNPCController(int objectid) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - - mplew.writeShort(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER.getValue()); - mplew.write(0); - mplew.writeInt(objectid); - - return mplew.getPacket(); + public static Packet removeNPCController(int objId) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER); + p.writeByte(0); + p.writeInt(objId); + return p; } /** @@ -6820,63 +6087,58 @@ public class PacketCreator { * @param mode The mode * @return Report Reponse packet */ - public static byte[] reportResponse(byte mode) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SUE_CHARACTER_RESULT.getValue()); - mplew.write(mode); - return mplew.getPacket(); + public static Packet reportResponse(byte mode) { + final OutPacket p = OutPacket.create(SendOpcode.SUE_CHARACTER_RESULT); + p.writeByte(mode); + return p; } - public static byte[] sendHammerData(int hammerUsed) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.VICIOUS_HAMMER.getValue()); - mplew.write(0x39); - mplew.writeInt(0); - mplew.writeInt(hammerUsed); - return mplew.getPacket(); + public static Packet sendHammerData(int hammerUsed) { + OutPacket p = OutPacket.create(SendOpcode.VICIOUS_HAMMER); + p.writeByte(0x39); + p.writeInt(0); + p.writeInt(hammerUsed); + return p; } - public static byte[] sendHammerMessage() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.VICIOUS_HAMMER.getValue()); - mplew.write(0x3D); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet sendHammerMessage() { + final OutPacket p = OutPacket.create(SendOpcode.VICIOUS_HAMMER); + p.writeByte(0x3D); + p.writeInt(0); + return p; } - public static byte[] playPortalSound() { + public static Packet playPortalSound() { return showSpecialEffect(7); } - public static byte[] showMonsterBookPickup() { + public static Packet showMonsterBookPickup() { return showSpecialEffect(14); } - public static byte[] showEquipmentLevelUp() { + public static Packet showEquipmentLevelUp() { return showSpecialEffect(15); } - public static byte[] showItemLevelup() { + public static Packet showItemLevelup() { return showSpecialEffect(15); } - public static byte[] showBuybackEffect() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(11); - mplew.writeInt(0); + public static Packet showBuybackEffect() { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(11); + p.writeInt(0); - return mplew.getPacket(); + return p; } - public static byte[] showForeignBuybackEffect(int cid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(11); - mplew.writeInt(0); + public static Packet showForeignBuybackEffect(int cid) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(cid); + p.writeByte(11); + p.writeInt(0); - return mplew.getPacket(); + return p; } /** @@ -6889,193 +6151,176 @@ public class PacketCreator { * @param effect * @return */ - public static byte[] showSpecialEffect(int effect) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(effect); - return mplew.getPacket(); + public static Packet showSpecialEffect(int effect) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(effect); + return p; } - public static byte[] showMakerEffect(boolean makerSucceeded) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(16); - mplew.writeInt(makerSucceeded ? 0 : 1); - return mplew.getPacket(); + public static Packet showMakerEffect(boolean makerSucceeded) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(16); + p.writeInt(makerSucceeded ? 0 : 1); + return p; } - public static byte[] showForeignMakerEffect(int cid, boolean makerSucceeded) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(16); - mplew.writeInt(makerSucceeded ? 0 : 1); - return mplew.getPacket(); + public static Packet showForeignMakerEffect(int cid, boolean makerSucceeded) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(cid); + p.writeByte(16); + p.writeInt(makerSucceeded ? 0 : 1); + return p; } - public static byte[] showForeignEffect(int effect) { + public static Packet showForeignEffect(int effect) { return showForeignEffect(-1, effect); } - public static byte[] showForeignEffect(int cid, int effect) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(effect); - return mplew.getPacket(); + public static Packet showForeignEffect(int chrId, int effect) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(chrId); + p.writeByte(effect); + return p; } - public static byte[] showOwnRecovery(byte heal) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(0x0A); - mplew.write(heal); - return mplew.getPacket(); + public static Packet showOwnRecovery(byte heal) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(0x0A); + p.writeByte(heal); + return p; } - public static byte[] showRecovery(int cid, byte amount) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); - mplew.writeInt(cid); - mplew.write(0x0A); - mplew.write(amount); - return mplew.getPacket(); + public static Packet showRecovery(int chrId, byte amount) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_FOREIGN_EFFECT); + p.writeInt(chrId); + p.writeByte(0x0A); + p.writeByte(amount); + return p; } - public static byte[] showWheelsLeft(int left) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); - mplew.write(0x15); - mplew.write(left); - return mplew.getPacket(); + public static Packet showWheelsLeft(int left) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_ITEM_GAIN_INCHAT); + p.writeByte(0x15); + p.writeByte(left); + return p; } - public static byte[] updateQuestFinish(short quest, int npc, short nextquest) { //Check - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); //0xF2 in v95 - mplew.write(8);//0x0A in v95 - mplew.writeShort(quest); - mplew.writeInt(npc); - mplew.writeShort(nextquest); - return mplew.getPacket(); + public static Packet updateQuestFinish(short quest, int npc, short nextquest) { //Check + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_QUEST_INFO); //0xF2 in v95 + p.writeByte(8);//0x0A in v95 + p.writeShort(quest); + p.writeInt(npc); + p.writeShort(nextquest); + return p; } - public static byte[] showInfoText(String text) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(9); - mplew.writeMapleAsciiString(text); - return mplew.getPacket(); + public static Packet showInfoText(String text) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(9); + p.writeString(text); + return p; } - public static byte[] questError(short quest) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); - mplew.write(0x0A); - mplew.writeShort(quest); - return mplew.getPacket(); + public static Packet questError(short quest) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_QUEST_INFO); + p.writeByte(0x0A); + p.writeShort(quest); + return p; } - public static byte[] questFailure(byte type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); - mplew.write(type);//0x0B = No meso, 0x0D = Worn by character, 0x0E = Not having the item ? - return mplew.getPacket(); + public static Packet questFailure(byte type) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_QUEST_INFO); + p.writeByte(type);//0x0B = No meso, 0x0D = Worn by character, 0x0E = Not having the item ? + return p; } - public static byte[] questExpire(short quest) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); - mplew.write(0x0F); - mplew.writeShort(quest); - return mplew.getPacket(); + public static Packet questExpire(short quest) { + final OutPacket p = OutPacket.create(SendOpcode.UPDATE_QUEST_INFO); + p.writeByte(0x0F); + p.writeShort(quest); + return p; } // MAKER_RESULT packets thanks to Arnah (Vertisy) - public static byte[] makerResult(boolean success, int itemMade, int itemCount, int mesos, List> itemsLost, int catalystID, List INCBuffGems) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); - mplew.writeInt(success ? 0 : 1); // 0 = success, 1 = fail - mplew.writeInt(1); // 1 or 2 doesn't matter, same methods - mplew.writeBool(!success); + public static Packet makerResult(boolean success, int itemMade, int itemCount, int mesos, List> itemsLost, int catalystID, List INCBuffGems) { + final OutPacket p = OutPacket.create(SendOpcode.MAKER_RESULT); + p.writeInt(success ? 0 : 1); // 0 = success, 1 = fail + p.writeInt(1); // 1 or 2 doesn't matter, same methods + p.writeBool(!success); if (success) { - mplew.writeInt(itemMade); - mplew.writeInt(itemCount); + p.writeInt(itemMade); + p.writeInt(itemCount); } - mplew.writeInt(itemsLost.size()); // Loop + p.writeInt(itemsLost.size()); // Loop for (Pair item : itemsLost) { - mplew.writeInt(item.getLeft()); - mplew.writeInt(item.getRight()); + p.writeInt(item.getLeft()); + p.writeInt(item.getRight()); } - mplew.writeInt(INCBuffGems.size()); + p.writeInt(INCBuffGems.size()); for (Integer gem : INCBuffGems) { - mplew.writeInt(gem); + p.writeInt(gem); } if (catalystID != -1) { - mplew.write(1); // stimulator - mplew.writeInt(catalystID); + p.writeByte(1); // stimulator + p.writeInt(catalystID); } else { - mplew.write(0); + p.writeByte(0); } - mplew.writeInt(mesos); - return mplew.getPacket(); + p.writeInt(mesos); + return p; } - public static byte[] makerResultCrystal(int itemIdGained, int itemIdLost) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); - mplew.writeInt(0); // Always successful! - mplew.writeInt(3); // Monster Crystal - mplew.writeInt(itemIdGained); - mplew.writeInt(itemIdLost); - return mplew.getPacket(); + public static Packet makerResultCrystal(int itemIdGained, int itemIdLost) { + final OutPacket p = OutPacket.create(SendOpcode.MAKER_RESULT); + p.writeInt(0); // Always successful! + p.writeInt(3); // Monster Crystal + p.writeInt(itemIdGained); + p.writeInt(itemIdLost); + return p; } - public static byte[] makerResultDesynth(int itemId, int mesos, List> itemsGained) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); - mplew.writeInt(0); // Always successful! - mplew.writeInt(4); // Mode Desynth - mplew.writeInt(itemId); // Item desynthed - mplew.writeInt(itemsGained.size()); // Loop of items gained, (int, int) + public static Packet makerResultDesynth(int itemId, int mesos, List> itemsGained) { + final OutPacket p = OutPacket.create(SendOpcode.MAKER_RESULT); + p.writeInt(0); // Always successful! + p.writeInt(4); // Mode Desynth + p.writeInt(itemId); // Item desynthed + p.writeInt(itemsGained.size()); // Loop of items gained, (int, int) for (Pair item : itemsGained) { - mplew.writeInt(item.getLeft()); - mplew.writeInt(item.getRight()); + p.writeInt(item.getLeft()); + p.writeInt(item.getRight()); } - mplew.writeInt(mesos); // Mesos spent. - return mplew.getPacket(); + p.writeInt(mesos); // Mesos spent. + return p; } - public static byte[] makerEnableActions() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); - mplew.writeInt(0); // Always successful! - mplew.writeInt(0); // Monster Crystal - mplew.writeInt(0); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet makerEnableActions() { + final OutPacket p = OutPacket.create(SendOpcode.MAKER_RESULT); + p.writeInt(0); // Always successful! + p.writeInt(0); // Monster Crystal + p.writeInt(0); + p.writeInt(0); + return p; } - public static byte[] getMultiMegaphone(String[] messages, int channel, boolean showEar) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); - mplew.write(0x0A); + public static Packet getMultiMegaphone(String[] messages, int channel, boolean showEar) { + final OutPacket p = OutPacket.create(SendOpcode.SERVERMESSAGE); + p.writeByte(0x0A); if (messages[0] != null) { - mplew.writeMapleAsciiString(messages[0]); + p.writeString(messages[0]); } - mplew.write(messages.length); + p.writeByte(messages.length); for (int i = 1; i < messages.length; i++) { if (messages[i] != null) { - mplew.writeMapleAsciiString(messages[i]); + p.writeString(messages[i]); } } for (int i = 0; i < 10; i++) { - mplew.write(channel - 1); + p.writeByte(channel - 1); } - mplew.write(showEar ? 1 : 0); - mplew.write(1); - return mplew.getPacket(); + p.writeByte(showEar ? 1 : 0); + p.writeByte(1); + return p; } /** @@ -7094,419 +6339,213 @@ public class PacketCreator { * @param mode The mode * @return The gm effect packet */ - public static byte[] getGMEffect(int type, byte mode) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ADMIN_RESULT.getValue()); - mplew.write(type); - mplew.write(mode); - return mplew.getPacket(); + public static Packet getGMEffect(int type, byte mode) { + OutPacket p = OutPacket.create(SendOpcode.ADMIN_RESULT); + p.writeByte(type); + p.writeByte(mode); + return p; } - public static byte[] findMerchantResponse(boolean map, int extra) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ADMIN_RESULT.getValue()); - mplew.write(0x13); - mplew.write(map ? 0 : 1); //00 = mapid, 01 = ch + public static Packet findMerchantResponse(boolean map, int extra) { + final OutPacket p = OutPacket.create(SendOpcode.ADMIN_RESULT); + p.writeByte(0x13); + p.writeByte(map ? 0 : 1); //00 = mapid, 01 = ch if (map) { - mplew.writeInt(extra); + p.writeInt(extra); } else { - mplew.write(extra); //-1 = unable to find + p.writeByte(extra); //-1 = unable to find } - mplew.write(0); - return mplew.getPacket(); + p.writeByte(0); + return p; } - public static byte[] disableMinimap() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ADMIN_RESULT.getValue()); - mplew.writeShort(0x1C); - return mplew.getPacket(); + public static Packet disableMinimap() { + final OutPacket p = OutPacket.create(SendOpcode.ADMIN_RESULT); + p.writeShort(0x1C); + return p; } - public static byte[] sendFamilyInvite(int playerId, String inviter) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_JOIN_REQUEST.getValue()); - mplew.writeInt(playerId); - mplew.writeMapleAsciiString(inviter); - return mplew.getPacket(); + public static Packet sendFamilyInvite(int playerId, String inviter) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_JOIN_REQUEST); + p.writeInt(playerId); + p.writeString(inviter); + return p; } - public static byte[] sendFamilySummonRequest(String familyName, String from) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_SUMMON_REQUEST.getValue()); - mplew.writeMapleAsciiString(from); - mplew.writeMapleAsciiString(familyName); - return mplew.getPacket(); + public static Packet sendFamilySummonRequest(String familyName, String from) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_SUMMON_REQUEST); + p.writeString(from); + p.writeString(familyName); + return p; } - public static byte[] sendFamilyLoginNotice(String name, boolean loggedIn) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_NOTIFY_LOGIN_OR_LOGOUT.getValue()); - mplew.writeBool(loggedIn); - mplew.writeMapleAsciiString(name); - return mplew.getPacket(); + public static Packet sendFamilyLoginNotice(String name, boolean loggedIn) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_NOTIFY_LOGIN_OR_LOGOUT); + p.writeBool(loggedIn); + p.writeString(name); + return p; } - public static byte[] sendFamilyJoinResponse(boolean accepted, String added) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_JOIN_REQUEST_RESULT.getValue()); - mplew.write(accepted ? 1 : 0); - mplew.writeMapleAsciiString(added); - return mplew.getPacket(); + public static Packet sendFamilyJoinResponse(boolean accepted, String added) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_JOIN_REQUEST_RESULT); + p.writeByte(accepted ? 1 : 0); + p.writeString(added); + return p; } - public static byte[] getSeniorMessage(String name) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_JOIN_ACCEPTED.getValue()); - mplew.writeMapleAsciiString(name); - mplew.writeInt(0); - return mplew.getPacket(); + public static Packet getSeniorMessage(String name) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_JOIN_ACCEPTED); + p.writeString(name); + p.writeInt(0); + return p; } - public static byte[] sendGainRep(int gain, String from) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_REP_GAIN.getValue()); - mplew.writeInt(gain); - mplew.writeMapleAsciiString(from); - return mplew.getPacket(); + public static Packet sendGainRep(int gain, String from) { + final OutPacket p = OutPacket.create(SendOpcode.FAMILY_REP_GAIN); + p.writeInt(gain); + p.writeString(from); + return p; } - public static byte[] showBoughtCashPackage(List cashPackage, int accountId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showBoughtCashPackage(List cashPackage, int accountId) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x89); - mplew.write(cashPackage.size()); + p.writeByte(0x89); + p.writeByte(cashPackage.size()); for (Item item : cashPackage) { - addCashItemInformation(mplew, item, accountId); + addCashItemInformation(p, item, accountId); } - mplew.writeShort(0); + p.writeShort(0); - return mplew.getPacket(); + return p; } - public static byte[] showBoughtQuestItem(int itemId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - - mplew.write(0x8D); - mplew.writeInt(1); - mplew.writeShort(1); - mplew.write(0x0B); - mplew.write(0); - mplew.writeInt(itemId); - - return mplew.getPacket(); + public static Packet showBoughtQuestItem(int itemId) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0x8D); + p.writeInt(1); + p.writeShort(1); + p.writeByte(0x0B); + p.writeByte(0); + p.writeInt(itemId); + return p; } // Cash Shop Surprise packets found thanks to Arnah (Vertisy) - public static byte[] onCashItemGachaponOpenFailed() { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_CASH_ITEM_GACHAPON_RESULT.getValue()); - mplew.write(0xE4); - return mplew.getPacket(); + public static Packet onCashItemGachaponOpenFailed() { + OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_CASH_ITEM_GACHAPON_RESULT); + p.writeByte(0xE4); + return p; } - public static byte[] onCashGachaponOpenSuccess(int accountid, long sn, int remainingBoxes, Item item, int itemid, int nSelectedItemCount, boolean bJackpot) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_CASH_ITEM_GACHAPON_RESULT.getValue()); - mplew.write(0xE5); // subopcode thanks to Ubaware - mplew.writeLong(sn);// sn of the box used - mplew.writeInt(remainingBoxes); - addCashItemInformation(mplew, item, accountid); - mplew.writeInt(itemid);// the itemid of the liSN? - mplew.write(nSelectedItemCount);// the total count now? o.O - mplew.writeBool(bJackpot);// "CashGachaponJackpot" - return mplew.getPacket(); + public static Packet onCashGachaponOpenSuccess(int accountid, long sn, int remainingBoxes, Item item, int itemid, int nSelectedItemCount, boolean bJackpot) { + OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_CASH_ITEM_GACHAPON_RESULT); + p.writeByte(0xE5); // subopcode thanks to Ubaware + p.writeLong(sn);// sn of the box used + p.writeInt(remainingBoxes); + addCashItemInformation(p, item, accountid); + p.writeInt(itemid);// the itemid of the liSN? + p.writeByte(nSelectedItemCount);// the total count now? o.O + p.writeBool(bJackpot);// "CashGachaponJackpot" + return p; } - private static void getGuildInfo(final MaplePacketLittleEndianWriter mplew, MapleGuild guild) { - mplew.writeInt(guild.getId()); - mplew.writeMapleAsciiString(guild.getName()); - for (int i = 1; i <= 5; i++) { - mplew.writeMapleAsciiString(guild.getRankTitle(i)); - } - Collection members = guild.getMembers(); - mplew.write(members.size()); - for (MapleGuildCharacter mgc : members) { - mplew.writeInt(mgc.getId()); - } - for (MapleGuildCharacter mgc : members) { - mplew.writeAsciiString(getRightPaddedStr(mgc.getName(), '\0', 13)); - mplew.writeInt(mgc.getJobId()); - mplew.writeInt(mgc.getLevel()); - mplew.writeInt(mgc.getGuildRank()); - mplew.writeInt(mgc.isOnline() ? 1 : 0); - mplew.writeInt(guild.getSignature()); - mplew.writeInt(mgc.getAllianceRank()); - } - mplew.writeInt(guild.getCapacity()); - mplew.writeShort(guild.getLogoBG()); - mplew.write(guild.getLogoBGColor()); - mplew.writeShort(guild.getLogo()); - mplew.write(guild.getLogoColor()); - mplew.writeMapleAsciiString(guild.getNotice()); - mplew.writeInt(guild.getGP()); - mplew.writeInt(guild.getAllianceId()); + public static Packet sendMesoLimit() { + final OutPacket p = OutPacket.create(SendOpcode.TRADE_MONEY_LIMIT); //Players under level 15 can only trade 1m per day + return p; } - public static byte[] getAllianceInfo(MapleAlliance alliance) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x0C); - mplew.write(1); - mplew.writeInt(alliance.getId()); - mplew.writeMapleAsciiString(alliance.getName()); - for (int i = 1; i <= 5; i++) { - mplew.writeMapleAsciiString(alliance.getRankTitle(i)); - } - mplew.write(alliance.getGuilds().size()); - mplew.writeInt(alliance.getCapacity()); // probably capacity - for (Integer guild : alliance.getGuilds()) { - mplew.writeInt(guild); - } - mplew.writeMapleAsciiString(alliance.getNotice()); - return mplew.getPacket(); + public static Packet removeItemFromDuey(boolean remove, int Package) { + final OutPacket p = OutPacket.create(SendOpcode.PARCEL); + p.writeByte(0x17); + p.writeInt(Package); + p.writeByte(remove ? 3 : 4); + return p; } - public static byte[] updateAllianceInfo(MapleAlliance alliance, int world) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x0F); - mplew.writeInt(alliance.getId()); - mplew.writeMapleAsciiString(alliance.getName()); - for (int i = 1; i <= 5; i++) { - mplew.writeMapleAsciiString(alliance.getRankTitle(i)); - } - mplew.write(alliance.getGuilds().size()); - for (Integer guild : alliance.getGuilds()) { - mplew.writeInt(guild); - } - mplew.writeInt(alliance.getCapacity()); // probably capacity - mplew.writeShort(0); - for (Integer guildid : alliance.getGuilds()) { - getGuildInfo(mplew, Server.getInstance().getGuild(guildid, world)); - } - return mplew.getPacket(); + public static Packet sendDueyParcelReceived(String from, boolean quick) { // thanks inhyuk + OutPacket p = OutPacket.create(SendOpcode.PARCEL); + p.writeByte(0x19); + p.writeString(from); + p.writeBool(quick); + return p; } - public static byte[] getGuildAlliances(MapleAlliance alliance, int worldId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x0D); - mplew.writeInt(alliance.getGuilds().size()); - for (Integer guild : alliance.getGuilds()) { - getGuildInfo(mplew, Server.getInstance().getGuild(guild, worldId)); - } - return mplew.getPacket(); + public static Packet sendDueyParcelNotification(boolean quick) { + final OutPacket p = OutPacket.create(SendOpcode.PARCEL); + p.writeByte(0x1B); + p.writeBool(quick); // 0 : package received, 1 : quick delivery package + return p; } - public static byte[] addGuildToAlliance(MapleAlliance alliance, int newGuild, MapleClient c) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x12); - mplew.writeInt(alliance.getId()); - mplew.writeMapleAsciiString(alliance.getName()); - for (int i = 1; i <= 5; i++) { - mplew.writeMapleAsciiString(alliance.getRankTitle(i)); - } - mplew.write(alliance.getGuilds().size()); - for (Integer guild : alliance.getGuilds()) { - mplew.writeInt(guild); - } - mplew.writeInt(alliance.getCapacity()); - mplew.writeMapleAsciiString(alliance.getNotice()); - mplew.writeInt(newGuild); - getGuildInfo(mplew, Server.getInstance().getGuild(newGuild, c.getWorld(), null)); - return mplew.getPacket(); - } - - public static byte[] allianceMemberOnline(MapleCharacter mc, boolean online) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x0E); - mplew.writeInt(mc.getGuild().getAllianceId()); - mplew.writeInt(mc.getGuildId()); - mplew.writeInt(mc.getId()); - mplew.write(online ? 1 : 0); - return mplew.getPacket(); - } - - public static byte[] allianceNotice(int id, String notice) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x1C); - mplew.writeInt(id); - mplew.writeMapleAsciiString(notice); - return mplew.getPacket(); - } - - public static byte[] changeAllianceRankTitle(int alliance, String[] ranks) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x1A); - mplew.writeInt(alliance); - for (int i = 0; i < 5; i++) { - mplew.writeMapleAsciiString(ranks[i]); - } - return mplew.getPacket(); - } - - public static byte[] updateAllianceJobLevel(MapleCharacter mc) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x18); - mplew.writeInt(mc.getGuild().getAllianceId()); - mplew.writeInt(mc.getGuildId()); - mplew.writeInt(mc.getId()); - mplew.writeInt(mc.getLevel()); - mplew.writeInt(mc.getJob().getId()); - return mplew.getPacket(); - } - - public static byte[] removeGuildFromAlliance(MapleAlliance alliance, int expelledGuild, int worldId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x10); - mplew.writeInt(alliance.getId()); - mplew.writeMapleAsciiString(alliance.getName()); - for (int i = 1; i <= 5; i++) { - mplew.writeMapleAsciiString(alliance.getRankTitle(i)); - } - mplew.write(alliance.getGuilds().size()); - for (Integer guild : alliance.getGuilds()) { - mplew.writeInt(guild); - } - mplew.writeInt(alliance.getCapacity()); - mplew.writeMapleAsciiString(alliance.getNotice()); - mplew.writeInt(expelledGuild); - getGuildInfo(mplew, Server.getInstance().getGuild(expelledGuild, worldId, null)); - mplew.write(0x01); - return mplew.getPacket(); - } - - public static byte[] disbandAlliance(int alliance) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x1D); - mplew.writeInt(alliance); - return mplew.getPacket(); - } - - public static byte[] allianceInvite(int allianceid, MapleCharacter chr) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); - mplew.write(0x03); - mplew.writeInt(allianceid); - mplew.writeMapleAsciiString(chr.getName()); - mplew.writeShort(0); - return mplew.getPacket(); - } - - public static byte[] sendMesoLimit() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.TRADE_MONEY_LIMIT.getValue()); //Players under level 15 can only trade 1m per day - return mplew.getPacket(); - } - - public static byte[] removeItemFromDuey(boolean remove, int Package) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARCEL.getValue()); - mplew.write(0x17); - mplew.writeInt(Package); - mplew.write(remove ? 3 : 4); - return mplew.getPacket(); - } - - public static byte[] sendDueyParcelReceived(String from, boolean quick) { // thanks inhyuk - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARCEL.getValue()); - mplew.write(0x19); - mplew.writeMapleAsciiString(from); - mplew.writeBool(quick); - return mplew.getPacket(); - } - - public static byte[] sendDueyParcelNotification(boolean quick) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARCEL.getValue()); - mplew.write(0x1B); - mplew.writeBool(quick); // 0 : package received, 1 : quick delivery package - return mplew.getPacket(); - } - - public static byte[] sendDueyMSG(byte operation) { + public static Packet sendDueyMSG(byte operation) { return sendDuey(operation, null); } - public static byte[] sendDuey(int operation, List packages) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PARCEL.getValue()); - mplew.write(operation); + public static Packet sendDuey(int operation, List packages) { + final OutPacket p = OutPacket.create(SendOpcode.PARCEL); + p.writeByte(operation); if (operation == 8) { - mplew.write(0); - mplew.write(packages.size()); + p.writeByte(0); + p.writeByte(packages.size()); for (DueyPackage dp : packages) { - mplew.writeInt(dp.getPackageId()); - mplew.writeAsciiString(dp.getSender()); + p.writeInt(dp.getPackageId()); + p.writeFixedString(dp.getSender()); for (int i = dp.getSender().length(); i < 13; i++) { - mplew.write(0); + p.writeByte(0); } - mplew.writeInt(dp.getMesos()); - mplew.writeLong(getTime(dp.sentTimeInMilliseconds())); + p.writeInt(dp.getMesos()); + p.writeLong(getTime(dp.sentTimeInMilliseconds())); String msg = dp.getMessage(); if (msg != null) { - mplew.writeInt(1); - mplew.writeAsciiString(msg); + p.writeInt(1); + p.writeFixedString(msg); for (int i = msg.length(); i < 200; i++) { - mplew.write(0); + p.writeByte(0); } } else { - mplew.writeInt(0); - mplew.skip(200); + p.writeInt(0); + p.skip(200); } - mplew.write(0); + p.writeByte(0); if (dp.getItem() != null) { - mplew.write(1); - addItemInfo(mplew, dp.getItem(), true); + p.writeByte(1); + addItemInfo(p, dp.getItem(), true); } else { - mplew.write(0); + p.writeByte(0); } } - mplew.write(0); + p.writeByte(0); } - return mplew.getPacket(); + return p; } - public static byte[] sendDojoAnimation(byte firstByte, String animation) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); - mplew.write(firstByte); - mplew.writeMapleAsciiString(animation); - return mplew.getPacket(); + public static Packet sendDojoAnimation(byte firstByte, String animation) { + final OutPacket p = OutPacket.create(SendOpcode.FIELD_EFFECT); + p.writeByte(firstByte); + p.writeString(animation); + return p; } - public static byte[] getDojoInfo(String info) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(10); - mplew.write(new byte[]{(byte) 0xB7, 4});//QUEST ID f5 - mplew.writeMapleAsciiString(info); - return mplew.getPacket(); + public static Packet getDojoInfo(String info) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(10); + p.writeBytes(new byte[]{(byte) 0xB7, 4});//QUEST ID f5 + p.writeString(info); + return p; } - public static byte[] getDojoInfoMessage(String message) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(9); - mplew.writeMapleAsciiString(message); - return mplew.getPacket(); + public static Packet getDojoInfoMessage(String message) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(9); + p.writeString(message); + return p; } /** @@ -7522,11 +6561,10 @@ public class PacketCreator { * @param type The type * @return The "block" packet. */ - public static byte[] blockedMessage(int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BLOCKED_MAP.getValue()); - mplew.write(type); - return mplew.getPacket(); + public static Packet blockedMessage(int type) { + final OutPacket p = OutPacket.create(SendOpcode.BLOCKED_MAP); + p.writeByte(type); + return p; } /** @@ -7542,20 +6580,18 @@ public class PacketCreator { * @param type The type * @return The "block" packet. */ - public static byte[] blockedMessage2(int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BLOCKED_SERVER.getValue()); - mplew.write(type); - return mplew.getPacket(); + public static Packet blockedMessage2(int type) { + final OutPacket p = OutPacket.create(SendOpcode.BLOCKED_SERVER); + p.writeByte(type); + return p; } - public static byte[] updateDojoStats(MapleCharacter chr, int belt) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(10); - mplew.write(new byte[]{(byte) 0xB7, 4}); //? - mplew.writeMapleAsciiString("pt=" + chr.getDojoPoints() + ";belt=" + belt + ";tuto=" + (chr.getFinishedDojoTutorial() ? "1" : "0")); - return mplew.getPacket(); + public static Packet updateDojoStats(MapleCharacter chr, int belt) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(10); + p.writeBytes(new byte[]{(byte) 0xB7, 4}); //? + p.writeString("pt=" + chr.getDojoPoints() + ";belt=" + belt + ";tuto=" + (chr.getFinishedDojoTutorial() ? "1" : "0")); + return p; } /** @@ -7568,14 +6604,13 @@ public class PacketCreator { * @param type The type * @return The "levelup" packet. */ - public static byte[] levelUpMessage(int type, int level, String charname) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NOTIFY_LEVELUP.getValue()); - mplew.write(type); - mplew.writeInt(level); - mplew.writeMapleAsciiString(charname); + public static Packet levelUpMessage(int type, int level, String charname) { + final OutPacket p = OutPacket.create(SendOpcode.NOTIFY_LEVELUP); + p.writeByte(type); + p.writeInt(level); + p.writeString(charname); - return mplew.getPacket(); + return p; } /** @@ -7588,13 +6623,12 @@ public class PacketCreator { * @param type The type * @return The "married" packet. */ - public static byte[] marriageMessage(int type, String charname) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NOTIFY_MARRIAGE.getValue()); - mplew.write(type); // 0: guild, 1: family - mplew.writeMapleAsciiString("> " + charname); //To fix the stupid packet lol + public static Packet marriageMessage(int type, String charname) { + final OutPacket p = OutPacket.create(SendOpcode.NOTIFY_MARRIAGE); + p.writeByte(type); // 0: guild, 1: family + p.writeString("> " + charname); //To fix the stupid packet lol - return mplew.getPacket(); + return p; } /** @@ -7606,14 +6640,12 @@ public class PacketCreator { * @param type The type * @return The "job advance" packet. */ - public static byte[] jobMessage(int type, int job, String charname) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.NOTIFY_JOB_CHANGE.getValue()); - mplew.write(type); - mplew.writeInt(job); //Why fking int? - mplew.writeMapleAsciiString("> " + charname); //To fix the stupid packet lol - - return mplew.getPacket(); + public static Packet jobMessage(int type, int job, String charname) { + OutPacket p = OutPacket.create(SendOpcode.NOTIFY_JOB_CHANGE); + p.writeByte(type); + p.writeInt(job); //Why fking int? + p.writeString("> " + charname); //To fix the stupid packet lol + return p; } /** @@ -7621,37 +6653,33 @@ public class PacketCreator { * @param delay - seconds * @return */ - public static byte[] trembleEffect(int type, int delay) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); - mplew.write(1); - mplew.write(type); - mplew.writeInt(delay); - return mplew.getPacket(); + public static Packet trembleEffect(int type, int delay) { + final OutPacket p = OutPacket.create(SendOpcode.FIELD_EFFECT); + p.writeByte(1); + p.writeByte(type); + p.writeInt(delay); + return p; } - public static byte[] getEnergy(String info, int amount) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SESSION_VALUE.getValue()); - mplew.writeMapleAsciiString(info); - mplew.writeMapleAsciiString(Integer.toString(amount)); - return mplew.getPacket(); + public static Packet getEnergy(String info, int amount) { + final OutPacket p = OutPacket.create(SendOpcode.SESSION_VALUE); + p.writeString(info); + p.writeString(Integer.toString(amount)); + return p; } - public static byte[] dojoWarpUp() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DOJO_WARP_UP.getValue()); - mplew.write(0); - mplew.write(6); - return mplew.getPacket(); + public static Packet dojoWarpUp() { + final OutPacket p = OutPacket.create(SendOpcode.DOJO_WARP_UP); + p.writeByte(0); + p.writeByte(6); + return p; } - public static byte[] itemExpired(int itemid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(2); - mplew.writeInt(itemid); - return mplew.getPacket(); + public static Packet itemExpired(int itemid) { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(2); + p.writeInt(itemid); + return p; } private static String getRightPaddedStr(String in, char padchar, int length) { @@ -7662,138 +6690,127 @@ public class PacketCreator { return builder.toString(); } - public static byte[] MobDamageMobFriendly(MapleMonster mob, int damage, int remainingHp) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.DAMAGE_MONSTER.getValue()); - mplew.writeInt(mob.getObjectId()); - mplew.write(1); // direction ? - mplew.writeInt(damage); - mplew.writeInt(remainingHp); - mplew.writeInt(mob.getMaxHp()); - return mplew.getPacket(); + public static Packet MobDamageMobFriendly(MapleMonster mob, int damage, int remainingHp) { + final OutPacket p = OutPacket.create(SendOpcode.DAMAGE_MONSTER); + p.writeInt(mob.getObjectId()); + p.writeByte(1); // direction ? + p.writeInt(damage); + p.writeInt(remainingHp); + p.writeInt(mob.getMaxHp()); + return p; } - public static byte[] shopErrorMessage(int error, int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); - mplew.write(0x0A); - mplew.write(type); - mplew.write(error); - return mplew.getPacket(); + public static Packet shopErrorMessage(int error, int type) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(0x0A); + p.writeByte(type); + p.writeByte(error); + return p; } - private static void addRingInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.writeShort(chr.getCrushRings().size()); + private static void addRingInfo(OutPacket p, MapleCharacter chr) { + p.writeShort(chr.getCrushRings().size()); for (MapleRing ring : chr.getCrushRings()) { - mplew.writeInt(ring.getPartnerChrId()); - mplew.writeAsciiString(getRightPaddedStr(ring.getPartnerName(), '\0', 13)); - mplew.writeInt(ring.getRingId()); - mplew.writeInt(0); - mplew.writeInt(ring.getPartnerRingId()); - mplew.writeInt(0); + p.writeInt(ring.getPartnerChrId()); + p.writeFixedString(getRightPaddedStr(ring.getPartnerName(), '\0', 13)); + p.writeInt(ring.getRingId()); + p.writeInt(0); + p.writeInt(ring.getPartnerRingId()); + p.writeInt(0); } - mplew.writeShort(chr.getFriendshipRings().size()); + p.writeShort(chr.getFriendshipRings().size()); for (MapleRing ring : chr.getFriendshipRings()) { - mplew.writeInt(ring.getPartnerChrId()); - mplew.writeAsciiString(getRightPaddedStr(ring.getPartnerName(), '\0', 13)); - mplew.writeInt(ring.getRingId()); - mplew.writeInt(0); - mplew.writeInt(ring.getPartnerRingId()); - mplew.writeInt(0); - mplew.writeInt(ring.getItemId()); + p.writeInt(ring.getPartnerChrId()); + p.writeFixedString(getRightPaddedStr(ring.getPartnerName(), '\0', 13)); + p.writeInt(ring.getRingId()); + p.writeInt(0); + p.writeInt(ring.getPartnerRingId()); + p.writeInt(0); + p.writeInt(ring.getItemId()); } if (chr.getPartnerId() > 0) { MapleRing marriageRing = chr.getMarriageRing(); - mplew.writeShort(1); - mplew.writeInt(chr.getRelationshipId()); - mplew.writeInt(chr.getGender() == 0 ? chr.getId() : chr.getPartnerId()); - mplew.writeInt(chr.getGender() == 0 ? chr.getPartnerId() : chr.getId()); - mplew.writeShort((marriageRing != null) ? 3 : 1); + p.writeShort(1); + p.writeInt(chr.getRelationshipId()); + p.writeInt(chr.getGender() == 0 ? chr.getId() : chr.getPartnerId()); + p.writeInt(chr.getGender() == 0 ? chr.getPartnerId() : chr.getId()); + p.writeShort((marriageRing != null) ? 3 : 1); if (marriageRing != null) { - mplew.writeInt(marriageRing.getItemId()); - mplew.writeInt(marriageRing.getItemId()); + p.writeInt(marriageRing.getItemId()); + p.writeInt(marriageRing.getItemId()); } else { - mplew.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) - mplew.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) + p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) + p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) } - mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getName() : MapleCharacter.getNameById(chr.getPartnerId()), '\0', 13)); - mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? MapleCharacter.getNameById(chr.getPartnerId()) : chr.getName(), '\0', 13)); + p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getName() : MapleCharacter.getNameById(chr.getPartnerId()), '\0', 13)); + p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? MapleCharacter.getNameById(chr.getPartnerId()) : chr.getName(), '\0', 13)); } else { - mplew.writeShort(0); + p.writeShort(0); } } - public static byte[] finishedSort(int inv) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.GATHER_ITEM_RESULT.getValue()); - mplew.write(0); - mplew.write(inv); - return mplew.getPacket(); + public static Packet finishedSort(int inv) { + OutPacket p = OutPacket.create(SendOpcode.GATHER_ITEM_RESULT); + p.writeByte(0); + p.writeByte(inv); + return p; } - public static byte[] finishedSort2(int inv) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.SORT_ITEM_RESULT.getValue()); - mplew.write(0); - mplew.write(inv); - return mplew.getPacket(); + public static Packet finishedSort2(int inv) { + OutPacket p = OutPacket.create(SendOpcode.SORT_ITEM_RESULT); + p.writeByte(0); + p.writeByte(inv); + return p; } - public static byte[] bunnyPacket() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); - mplew.write(9); - mplew.writeAsciiString("Protect the Moon Bunny!!!"); - return mplew.getPacket(); + public static Packet bunnyPacket() { + final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); + p.writeByte(9); + p.writeFixedString("Protect the Moon Bunny!!!"); + return p; } - public static byte[] hpqMessage(String text) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.BLOW_WEATHER.getValue()); // not 100% sure - mplew.write(0); - mplew.writeInt(5120016); - mplew.writeAsciiString(text); - return mplew.getPacket(); + public static Packet hpqMessage(String text) { + final OutPacket p = OutPacket.create(SendOpcode.BLOW_WEATHER); // not 100% sure + p.writeByte(0); + p.writeInt(5120016); + p.writeFixedString(text); + return p; } - public static byte[] showEventInstructions() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GMEVENT_INSTRUCTIONS.getValue()); - mplew.write(0); - return mplew.getPacket(); + public static Packet showEventInstructions() { + final OutPacket p = OutPacket.create(SendOpcode.GMEVENT_INSTRUCTIONS); + p.writeByte(0); + return p; } - public static byte[] leftKnockBack() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); - mplew.writeShort(SendOpcode.LEFT_KNOCK_BACK.getValue()); - return mplew.getPacket(); + public static Packet leftKnockBack() { + return OutPacket.create(SendOpcode.LEFT_KNOCK_BACK); } - public static byte[] rollSnowBall(boolean entermap, int state, MapleSnowball ball0, MapleSnowball ball1) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SNOWBALL_STATE.getValue()); + public static Packet rollSnowBall(boolean entermap, int state, MapleSnowball ball0, MapleSnowball ball1) { + OutPacket p = OutPacket.create(SendOpcode.SNOWBALL_STATE); if (entermap) { - mplew.skip(21); + p.skip(21); } else { - mplew.write(state);// 0 = move, 1 = roll, 2 is down disappear, 3 is up disappear - mplew.writeInt(ball0.getSnowmanHP() / 75); - mplew.writeInt(ball1.getSnowmanHP() / 75); - mplew.writeShort(ball0.getPosition());//distance snowball down, 84 03 = max - mplew.write(-1); - mplew.writeShort(ball1.getPosition());//distance snowball up, 84 03 = max - mplew.write(-1); + p.writeByte(state);// 0 = move, 1 = roll, 2 is down disappear, 3 is up disappear + p.writeInt(ball0.getSnowmanHP() / 75); + p.writeInt(ball1.getSnowmanHP() / 75); + p.writeShort(ball0.getPosition());//distance snowball down, 84 03 = max + p.writeByte(-1); + p.writeShort(ball1.getPosition());//distance snowball up, 84 03 = max + p.writeByte(-1); } - return mplew.getPacket(); + return p; } - public static byte[] hitSnowBall(int what, int damage) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.HIT_SNOWBALL.getValue()); - mplew.write(what); - mplew.writeInt(damage); - return mplew.getPacket(); + public static Packet hitSnowBall(int what, int damage) { + OutPacket p = OutPacket.create(SendOpcode.HIT_SNOWBALL); + p.writeByte(what); + p.writeInt(damage); + return p; } /** @@ -7807,83 +6824,73 @@ public class PacketCreator { * * @param message */ - public static byte[] snowballMessage(int team, int message) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.SNOWBALL_MESSAGE.getValue()); - mplew.write(team);// 0 is down, 1 is up - mplew.writeInt(message); - return mplew.getPacket(); + public static Packet snowballMessage(int team, int message) { + OutPacket p = OutPacket.create(SendOpcode.SNOWBALL_MESSAGE); + p.writeByte(team);// 0 is down, 1 is up + p.writeInt(message); + return p; } - public static byte[] coconutScore(int team1, int team2) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.COCONUT_SCORE.getValue()); - mplew.writeShort(team1); - mplew.writeShort(team2); - return mplew.getPacket(); + public static Packet coconutScore(int team1, int team2) { + OutPacket p = OutPacket.create(SendOpcode.COCONUT_SCORE); + p.writeShort(team1); + p.writeShort(team2); + return p; } - public static byte[] hitCoconut(boolean spawn, int id, int type) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.COCONUT_HIT.getValue()); + public static Packet hitCoconut(boolean spawn, int id, int type) { + OutPacket p = OutPacket.create(SendOpcode.COCONUT_HIT); if (spawn) { - mplew.writeShort(-1); - mplew.writeShort(5000); - mplew.write(0); + p.writeShort(-1); + p.writeShort(5000); + p.writeByte(0); } else { - mplew.writeShort(id); - mplew.writeShort(1000);//delay till you can attack again! - mplew.write(type); // What action to do for the coconut. + p.writeShort(id); + p.writeShort(1000);//delay till you can attack again! + p.writeByte(type); // What action to do for the coconut. } - return mplew.getPacket(); + return p; } - public static byte[] customPacket(String packet) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.write(HexTool.getByteArrayFromHexString(packet)); - return mplew.getPacket(); + public static Packet customPacket(String packet) { + OutPacket p = new ByteBufOutPacket(); + p.writeBytes(HexTool.getByteArrayFromHexString(packet)); + return p; } - public static byte[] customPacket(byte[] packet) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(packet.length); - mplew.write(packet); - return mplew.getPacket(); + public static Packet customPacket(byte[] packet) { + OutPacket p = new ByteBufOutPacket(); + p.writeBytes(packet); + return p; } - public static byte[] spawnGuide(boolean spawn) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.SPAWN_GUIDE.getValue()); - if (spawn) { - mplew.write(1); - } else { - mplew.write(0); - } - return mplew.getPacket(); + public static Packet spawnGuide(boolean spawn) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_GUIDE); + p.writeBool(spawn); + return p; } - public static byte[] talkGuide(String talk) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.TALK_GUIDE.getValue()); - mplew.write(0); - mplew.writeMapleAsciiString(talk); - mplew.write(new byte[]{(byte) 0xC8, 0, 0, 0, (byte) 0xA0, (byte) 0x0F, 0, 0}); - return mplew.getPacket(); + public static Packet talkGuide(String talk) { + final OutPacket p = OutPacket.create(SendOpcode.TALK_GUIDE); + p.writeByte(0); + p.writeString(talk); + p.writeBytes(new byte[]{(byte) 0xC8, 0, 0, 0, (byte) 0xA0, (byte) 0x0F, 0, 0}); + return p; } - public static byte[] guideHint(int hint) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); - mplew.writeShort(SendOpcode.TALK_GUIDE.getValue()); - mplew.write(1); - mplew.writeInt(hint); - mplew.writeInt(7000); - return mplew.getPacket(); + public static Packet guideHint(int hint) { + OutPacket p = OutPacket.create(SendOpcode.TALK_GUIDE); + p.writeByte(1); + p.writeInt(hint); + p.writeInt(7000); + return p; } - public static void addCashItemInformation(final MaplePacketLittleEndianWriter mplew, Item item, int accountId) { - addCashItemInformation(mplew, item, accountId, null); + public static void addCashItemInformation(OutPacket p, Item item, int accountId) { + addCashItemInformation(p, item, accountId, null); } - public static void addCashItemInformation(final MaplePacketLittleEndianWriter mplew, Item item, int accountId, String giftMessage) { + public static void addCashItemInformation(OutPacket p, Item item, int accountId, String giftMessage) { boolean isGift = giftMessage != null; boolean isRing = false; Equip equip = null; @@ -7891,65 +6898,62 @@ public class PacketCreator { equip = (Equip) item; isRing = equip.getRingId() > -1; } - mplew.writeLong(item.getPetId() > -1 ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()); + p.writeLong(item.getPetId() > -1 ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()); if (!isGift) { - mplew.writeInt(accountId); - mplew.writeInt(0); + p.writeInt(accountId); + p.writeInt(0); } - mplew.writeInt(item.getItemId()); + p.writeInt(item.getItemId()); if (!isGift) { - mplew.writeInt(item.getSN()); - mplew.writeShort(item.getQuantity()); + p.writeInt(item.getSN()); + p.writeShort(item.getQuantity()); } - mplew.writeAsciiString(StringUtil.getRightPaddedStr(item.getGiftFrom(), '\0', 13)); + p.writeFixedString(StringUtil.getRightPaddedStr(item.getGiftFrom(), '\0', 13)); if (isGift) { - mplew.writeAsciiString(StringUtil.getRightPaddedStr(giftMessage, '\0', 73)); + p.writeFixedString(StringUtil.getRightPaddedStr(giftMessage, '\0', 73)); return; } - addExpirationTime(mplew, item.getExpiration()); - mplew.writeLong(0); + addExpirationTime(p, item.getExpiration()); + p.writeLong(0); } - public static byte[] showWishList(MapleCharacter mc, boolean update) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showWishList(MapleCharacter mc, boolean update) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); if (update) { - mplew.write(0x55); + p.writeByte(0x55); } else { - mplew.write(0x4F); + p.writeByte(0x4F); } for (int sn : mc.getCashShop().getWishList()) { - mplew.writeInt(sn); + p.writeInt(sn); } for (int i = mc.getCashShop().getWishList().size(); i < 10; i++) { - mplew.writeInt(0); + p.writeInt(0); } - return mplew.getPacket(); + return p; } - public static byte[] showBoughtCashItem(Item item, int accountId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showBoughtCashItem(Item item, int accountId) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x57); - addCashItemInformation(mplew, item, accountId); + p.writeByte(0x57); + addCashItemInformation(p, item, accountId); - return mplew.getPacket(); + return p; } - public static byte[] showBoughtCashRing(Item ring, String recipient, int accountId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - mplew.write(0x87); - addCashItemInformation(mplew, ring, accountId); - mplew.writeMapleAsciiString(recipient); - mplew.writeInt(ring.getItemId()); - mplew.writeShort(1); //quantity - return mplew.getPacket(); + public static Packet showBoughtCashRing(Item ring, String recipient, int accountId) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0x87); + addCashItemInformation(p, ring, accountId); + p.writeString(recipient); + p.writeInt(ring.getItemId()); + p.writeShort(1); //quantity + return p; } /* @@ -8004,152 +7008,144 @@ public class PacketCreator { * E7 = lol sorry for the inconvenience, eh? * E8 = cannot purchase by anyone under 7 */ - public static byte[] showCashShopMessage(byte message) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - - mplew.write(0x5C); - mplew.write(message); - - return mplew.getPacket(); + public static Packet showCashShopMessage(byte message) { + OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0x5C); + p.writeByte(message); + return p; } - public static byte[] showCashInventory(MapleClient c) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showCashInventory(MapleClient c) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x4B); - mplew.writeShort(c.getPlayer().getCashShop().getInventory().size()); + p.writeByte(0x4B); + p.writeShort(c.getPlayer().getCashShop().getInventory().size()); for (Item item : c.getPlayer().getCashShop().getInventory()) { - addCashItemInformation(mplew, item, c.getAccID()); + addCashItemInformation(p, item, c.getAccID()); } - mplew.writeShort(c.getPlayer().getStorage().getSlots()); - mplew.writeShort(c.getCharacterSlots()); + p.writeShort(c.getPlayer().getStorage().getSlots()); + p.writeShort(c.getCharacterSlots()); - return mplew.getPacket(); + return p; } - public static byte[] showGifts(List> gifts) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showGifts(List> gifts) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x4D); - mplew.writeShort(gifts.size()); + p.writeByte(0x4D); + p.writeShort(gifts.size()); for (Pair gift : gifts) { - addCashItemInformation(mplew, gift.getLeft(), 0, gift.getRight()); + addCashItemInformation(p, gift.getLeft(), 0, gift.getRight()); } - return mplew.getPacket(); + return p; } - public static byte[] showGiftSucceed(String to, CashItem item) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showGiftSucceed(String to, CashItem item) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x5E); //0x5D, Couldn't be sent - mplew.writeMapleAsciiString(to); - mplew.writeInt(item.getItemId()); - mplew.writeShort(item.getCount()); - mplew.writeInt(item.getPrice()); + p.writeByte(0x5E); //0x5D, Couldn't be sent + p.writeString(to); + p.writeInt(item.getItemId()); + p.writeShort(item.getCount()); + p.writeInt(item.getPrice()); - return mplew.getPacket(); + return p; } - public static byte[] showBoughtInventorySlots(int type, short slots) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showBoughtInventorySlots(int type, short slots) { + OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x60); - mplew.write(type); - mplew.writeShort(slots); + p.writeByte(0x60); + p.writeByte(type); + p.writeShort(slots); - return mplew.getPacket(); + return p; } - public static byte[] showBoughtStorageSlots(short slots) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showBoughtStorageSlots(short slots) { + OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x62); - mplew.writeShort(slots); + p.writeByte(0x62); + p.writeShort(slots); - return mplew.getPacket(); + return p; } - public static byte[] showBoughtCharacterSlot(short slots) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet showBoughtCharacterSlot(short slots) { + OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x64); - mplew.writeShort(slots); + p.writeByte(0x64); + p.writeShort(slots); - return mplew.getPacket(); + return p; } - public static byte[] takeFromCashInventory(Item item) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet takeFromCashInventory(Item item) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x68); - mplew.writeShort(item.getPosition()); - addItemInfo(mplew, item, true); + p.writeByte(0x68); + p.writeShort(item.getPosition()); + addItemInfo(p, item, true); - return mplew.getPacket(); + return p; } - public static byte[] deleteCashItem(Item item) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - mplew.write(0x6C); - mplew.writeLong(item.getCashId()); - return mplew.getPacket(); + public static Packet deleteCashItem(Item item) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0x6C); + p.writeLong(item.getCashId()); + return p; } - public static byte[] refundCashItem(Item item, int maplePoints) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - mplew.write(0x85); - mplew.writeLong(item.getCashId()); - mplew.writeInt(maplePoints); - return mplew.getPacket(); + public static Packet refundCashItem(Item item, int maplePoints) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); + p.writeByte(0x85); + p.writeLong(item.getCashId()); + p.writeInt(maplePoints); + return p; } - public static byte[] putIntoCashInventory(Item item, int accountId) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + public static Packet putIntoCashInventory(Item item, int accountId) { + final OutPacket p = OutPacket.create(SendOpcode.CASHSHOP_OPERATION); - mplew.write(0x6A); - addCashItemInformation(mplew, item, accountId); + p.writeByte(0x6A); + addCashItemInformation(p, item, accountId); - return mplew.getPacket(); + return p; } - public static byte[] openCashShop(MapleClient c, boolean mts) throws Exception { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(mts ? SendOpcode.SET_ITC.getValue() : SendOpcode.SET_CASH_SHOP.getValue()); + public static Packet openCashShop(MapleClient c, boolean mts) throws Exception { + final OutPacket p = OutPacket.create(mts ? SendOpcode.SET_ITC : SendOpcode.SET_CASH_SHOP); - addCharacterInfo(mplew, c.getPlayer()); + addCharacterInfo(p, c.getPlayer()); if (!mts) { - mplew.write(1); + p.writeByte(1); } - mplew.writeMapleAsciiString(c.getAccountName()); + p.writeString(c.getAccountName()); if (mts) { - mplew.write(new byte[]{(byte) 0x88, 19, 0, 0, 7, 0, 0, 0, (byte) 0xF4, 1, 0, 0, (byte) 0x18, 0, 0, 0, (byte) 0xA8, 0, 0, 0, (byte) 0x70, (byte) 0xAA, (byte) 0xA7, (byte) 0xC5, (byte) 0x4E, (byte) 0xC1, (byte) 0xCA, 1}); + p.writeBytes(new byte[]{(byte) 0x88, 19, 0, 0, + 7, 0, 0, 0, + (byte) 0xF4, 1, 0, 0, + (byte) 0x18, 0, 0, 0, + (byte) 0xA8, 0, 0, 0, + (byte) 0x70, (byte) 0xAA, (byte) 0xA7, (byte) 0xC5, + (byte) 0x4E, (byte) 0xC1, (byte) 0xCA, 1}); } else { - mplew.writeInt(0); + p.writeInt(0); List lsci = CashItemFactory.getSpecialCashItems(); - mplew.writeShort(lsci.size());//Guess what + p.writeShort(lsci.size());//Guess what for (SpecialCashItem sci : lsci) { - mplew.writeInt(sci.getSN()); - mplew.writeInt(sci.getModifier()); - mplew.write(sci.getInfo()); + p.writeInt(sci.getSN()); + p.writeInt(sci.getModifier()); + p.writeByte(sci.getInfo()); } - mplew.skip(121); + p.skip(121); List> mostSellers = c.getWorldServer().getMostSellerCashItems(); for (int i = 1; i <= 8; i++) { @@ -8157,163 +7153,146 @@ public class PacketCreator { for (int j = 0; j < 2; j++) { for (Integer snid : mostSellersTab) { - mplew.writeInt(i); - mplew.writeInt(j); - mplew.writeInt(snid); + p.writeInt(i); + p.writeInt(j); + p.writeInt(snid); } } } - mplew.writeInt(0); - mplew.writeShort(0); - mplew.write(0); - mplew.writeInt(75); + p.writeInt(0); + p.writeShort(0); + p.writeByte(0); + p.writeInt(75); } - return mplew.getPacket(); + return p; } - public static byte[] sendVegaScroll(int op) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.VEGA_SCROLL.getValue()); - mplew.write(op); - return mplew.getPacket(); + public static Packet sendVegaScroll(int op) { + OutPacket p = OutPacket.create(SendOpcode.VEGA_SCROLL); + p.writeByte(op); + return p; } - public static byte[] resetForcedStats() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); - mplew.writeShort(SendOpcode.FORCED_STAT_RESET.getValue()); - return mplew.getPacket(); + public static Packet resetForcedStats() { + return OutPacket.create(SendOpcode.FORCED_STAT_RESET); } - public static byte[] showCombo(int count) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.SHOW_COMBO.getValue()); - mplew.writeInt(count); - return mplew.getPacket(); + public static Packet showCombo(int count) { + OutPacket p = OutPacket.create(SendOpcode.SHOW_COMBO); + p.writeInt(count); + return p; } - public static byte[] earnTitleMessage(String msg) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SCRIPT_PROGRESS_MESSAGE.getValue()); - mplew.writeMapleAsciiString(msg); - return mplew.getPacket(); + public static Packet earnTitleMessage(String msg) { + final OutPacket p = OutPacket.create(SendOpcode.SCRIPT_PROGRESS_MESSAGE); + p.writeString(msg); + return p; } - public static byte[] CPUpdate(boolean party, int curCP, int totalCP, int team) { // CPQ - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + public static Packet CPUpdate(boolean party, int curCP, int totalCP, int team) { // CPQ + final OutPacket p; if (!party) { - mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_OBTAINED_CP.getValue()); + p = OutPacket.create(SendOpcode.MONSTER_CARNIVAL_OBTAINED_CP); } else { - mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_PARTY_CP.getValue()); - mplew.write(team); // team? + p = OutPacket.create(SendOpcode.MONSTER_CARNIVAL_PARTY_CP); + p.writeByte(team); // team? } - mplew.writeShort(curCP); - mplew.writeShort(totalCP); - return mplew.getPacket(); + p.writeShort(curCP); + p.writeShort(totalCP); + return p; } - public static byte[] CPQMessage(byte message) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); - mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_MESSAGE.getValue()); - mplew.write(message); // Message - return mplew.getPacket(); + public static Packet CPQMessage(byte message) { + OutPacket p = OutPacket.create(SendOpcode.MONSTER_CARNIVAL_MESSAGE); + p.writeByte(message); // Message + return p; } - public static byte[] playerSummoned(String name, int tab, int number) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_SUMMON.getValue()); - mplew.write(tab); - mplew.write(number); - mplew.writeMapleAsciiString(name); - return mplew.getPacket(); + public static Packet playerSummoned(String name, int tab, int number) { + OutPacket p = OutPacket.create(SendOpcode.MONSTER_CARNIVAL_SUMMON); + p.writeByte(tab); + p.writeByte(number); + p.writeString(name); + return p; } - public static byte[] playerDiedMessage(String name, int lostCP, int team) { // CPQ - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - - mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_DIED.getValue()); - mplew.write(team); // team - mplew.writeMapleAsciiString(name); - mplew.write(lostCP); - return mplew.getPacket(); + public static Packet playerDiedMessage(String name, int lostCP, int team) { // CPQ + OutPacket p = OutPacket.create(SendOpcode.MONSTER_CARNIVAL_DIED); + p.writeByte(team); // team + p.writeString(name); + p.writeByte(lostCP); + return p; } - public static byte[] startMonsterCarnival(MapleCharacter chr, int team, int oposition) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(25); - mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_START.getValue()); - mplew.write(team); // team - mplew.writeShort(chr.getCP()); // Obtained CP - Used CP - mplew.writeShort(chr.getTotalCP()); // Total Obtained CP - mplew.writeShort(chr.getMonsterCarnival().getCP(team)); // Obtained CP - Used CP of the team - mplew.writeShort(chr.getMonsterCarnival().getTotalCP(team)); // Total Obtained CP of the team - mplew.writeShort(chr.getMonsterCarnival().getCP(oposition)); // Obtained CP - Used CP of the team - mplew.writeShort(chr.getMonsterCarnival().getTotalCP(oposition)); // Total Obtained CP of the team - mplew.writeShort(0); // Probably useless nexon shit - mplew.writeLong(0); // Probably useless nexon shit - return mplew.getPacket(); + public static Packet startMonsterCarnival(MapleCharacter chr, int team, int opposition) { + OutPacket p = OutPacket.create(SendOpcode.MONSTER_CARNIVAL_START); + p.writeByte(team); // team + p.writeShort(chr.getCP()); // Obtained CP - Used CP + p.writeShort(chr.getTotalCP()); // Total Obtained CP + p.writeShort(chr.getMonsterCarnival().getCP(team)); // Obtained CP - Used CP of the team + p.writeShort(chr.getMonsterCarnival().getTotalCP(team)); // Total Obtained CP of the team + p.writeShort(chr.getMonsterCarnival().getCP(opposition)); // Obtained CP - Used CP of the team + p.writeShort(chr.getMonsterCarnival().getTotalCP(opposition)); // Total Obtained CP of the team + p.writeShort(0); // Probably useless nexon shit + p.writeLong(0); // Probably useless nexon shit + return p; } - public static byte[] sheepRanchInfo(byte wolf, byte sheep) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHEEP_RANCH_INFO.getValue()); - mplew.write(wolf); - mplew.write(sheep); - return mplew.getPacket(); + public static Packet sheepRanchInfo(byte wolf, byte sheep) { + final OutPacket p = OutPacket.create(SendOpcode.SHEEP_RANCH_INFO); + p.writeByte(wolf); + p.writeByte(sheep); + return p; } //Know what this is? ?? >=) - public static byte[] sheepRanchClothes(int id, byte clothes) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SHEEP_RANCH_CLOTHES.getValue()); - mplew.writeInt(id); //Character id - mplew.write(clothes); //0 = sheep, 1 = wolf, 2 = Spectator (wolf without wool) - return mplew.getPacket(); + public static Packet sheepRanchClothes(int id, byte clothes) { + final OutPacket p = OutPacket.create(SendOpcode.SHEEP_RANCH_CLOTHES); + p.writeInt(id); //Character id + p.writeByte(clothes); //0 = sheep, 1 = wolf, 2 = Spectator (wolf without wool) + return p; } - public static byte[] incubatorResult() {//lol - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); - mplew.writeShort(SendOpcode.INCUBATOR_RESULT.getValue()); - mplew.skip(6); - return mplew.getPacket(); + public static Packet incubatorResult() {//lol + OutPacket p = OutPacket.create(SendOpcode.INCUBATOR_RESULT); + p.skip(6); + return p; } - public static byte[] pyramidGauge(int gauge) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); - mplew.writeShort(SendOpcode.PYRAMID_GAUGE.getValue()); - mplew.writeInt(gauge); - return mplew.getPacket(); + public static Packet pyramidGauge(int gauge) { + OutPacket p = OutPacket.create(SendOpcode.PYRAMID_GAUGE); + p.writeInt(gauge); + return p; } // f2 - public static byte[] pyramidScore(byte score, int exp) {//Type cannot be higher than 4 (Rank D), otherwise you'll crash - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); - mplew.writeShort(SendOpcode.PYRAMID_SCORE.getValue()); - mplew.write(score); - mplew.writeInt(exp); - return mplew.getPacket(); + public static Packet pyramidScore(byte score, int exp) {//Type cannot be higher than 4 (Rank D), otherwise you'll crash + OutPacket p = OutPacket.create(SendOpcode.PYRAMID_SCORE); + p.writeByte(score); + p.writeInt(exp); + return p; } - public static byte[] spawnDragon(MapleDragon dragon) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.SPAWN_DRAGON.getValue()); - mplew.writeInt(dragon.getOwner().getId());//objectid = owner id - mplew.writeShort(dragon.getPosition().x); - mplew.writeShort(0); - mplew.writeShort(dragon.getPosition().y); - mplew.writeShort(0); - mplew.write(dragon.getStance()); - mplew.write(0); - mplew.writeShort(dragon.getOwner().getJob().getId()); - return mplew.getPacket(); + public static Packet spawnDragon(MapleDragon dragon) { + OutPacket p = OutPacket.create(SendOpcode.SPAWN_DRAGON); + p.writeInt(dragon.getOwner().getId());//objectid = owner id + p.writeShort(dragon.getPosition().x); + p.writeShort(0); + p.writeShort(dragon.getPosition().y); + p.writeShort(0); + p.writeByte(dragon.getStance()); + p.writeByte(0); + p.writeShort(dragon.getOwner().getJob().getId()); + return p; } - public static byte[] moveDragon(MapleDragon dragon, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.MOVE_DRAGON.getValue()); - mplew.writeInt(dragon.getOwner().getId()); - mplew.writePos(startPos); - rebroadcastMovementList(mplew, movementSlea, movementDataLength); - return mplew.getPacket(); + public static Packet moveDragon(MapleDragon dragon, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { + final OutPacket p = OutPacket.create(SendOpcode.MOVE_DRAGON); + p.writeInt(dragon.getOwner().getId()); + p.writePos(startPos); + rebroadcastMovementList(p, movementSlea, movementDataLength); + return p; } /** @@ -8322,11 +7301,10 @@ public class PacketCreator { * @param charid - Needs the specific Character ID * @return The packet */ - public static byte[] removeDragon(int chrid) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.REMOVE_DRAGON.getValue()); - mplew.writeInt(chrid); - return mplew.getPacket(); + public static Packet removeDragon(int chrId) { + OutPacket p = OutPacket.create(SendOpcode.REMOVE_DRAGON); + p.writeInt(chrId); + return p; } /** @@ -8368,73 +7346,54 @@ public class PacketCreator { return p; } - private static byte[] MassacreResult(byte nRank, int nIncExp) { + private static Packet MassacreResult(byte nRank, int nIncExp) { //CField_MassacreResult__OnMassacreResult @ 0x005617C5 - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.PYRAMID_SCORE.getValue()); //MASSACRERESULT | 0x009E - mplew.write(nRank); //(0 - S) (1 - A) (2 - B) (3 - C) (4 - D) ( Else - Crash ) - mplew.writeInt(nIncExp); - return mplew.getPacket(); - } - - private static byte[] GuildBoss_HealerMove(short nY) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_BOSS_HEALER_MOVE.getValue()); - mplew.writeShort(nY); //New Y Position - return mplew.getPacket(); + final OutPacket p = OutPacket.create(SendOpcode.PYRAMID_SCORE); //MASSACRERESULT | 0x009E + p.writeByte(nRank); //(0 - S) (1 - A) (2 - B) (3 - C) (4 - D) ( Else - Crash ) + p.writeInt(nIncExp); + return p; } - private static byte[] GuildBoss_PulleyStateChange(byte nState) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GUILD_BOSS_PULLEY_STATE_CHANGE.getValue()); - mplew.write(nState); - return mplew.getPacket(); + private static Packet Tournament__Tournament(byte nState, byte nSubState) { + final OutPacket p = OutPacket.create(SendOpcode.TOURNAMENT); + p.writeByte(nState); + p.writeByte(nSubState); + return p; } - private static byte[] Tournament__Tournament(byte nState, byte nSubState) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.TOURNAMENT.getValue()); - mplew.write(nState); - mplew.write(nSubState); - return mplew.getPacket(); + private static Packet Tournament__MatchTable(byte nState, byte nSubState) { + final OutPacket p = OutPacket.create(SendOpcode.TOURNAMENT_MATCH_TABLE); //Prompts CMatchTableDlg Modal + return p; } - private static byte[] Tournament__MatchTable(byte nState, byte nSubState) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.TOURNAMENT_MATCH_TABLE.getValue()); //Prompts CMatchTableDlg Modal - return mplew.getPacket(); - } - - private static byte[] Tournament__SetPrize(byte bSetPrize, byte bHasPrize, int nItemID1, int nItemID2) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.TOURNAMENT_SET_PRIZE.getValue()); + private static Packet Tournament__SetPrize(byte bSetPrize, byte bHasPrize, int nItemID1, int nItemID2) { + final OutPacket p = OutPacket.create(SendOpcode.TOURNAMENT_SET_PRIZE); //0 = "You have failed the set the prize. Please check the item number again." //1 = "You have successfully set the prize." - mplew.write(bSetPrize); + p.writeByte(bSetPrize); - mplew.write(bHasPrize); + p.writeByte(bHasPrize); if (bHasPrize != 0) { - mplew.writeInt(nItemID1); - mplew.writeInt(nItemID2); + p.writeInt(nItemID1); + p.writeInt(nItemID2); } - return mplew.getPacket(); + return p; } - private static byte[] Tournament__UEW(byte nState) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.TOURNAMENT_UEW.getValue()); + private static Packet Tournament__UEW(byte nState) { + final OutPacket p = OutPacket.create(SendOpcode.TOURNAMENT_UEW); //Is this a bitflag o.o ? //2 = "You have reached the finals by default." //4 = "You have reached the semifinals by default." //8 or 16 = "You have reached the round of %n by default." | Encodes nState as %n ?! - mplew.write(nState); + p.writeByte(nState); - return mplew.getPacket(); + return p; } } diff --git a/src/main/java/tools/packets/Fishing.java b/src/main/java/tools/packets/Fishing.java index b3a883b3c8..32cd43a4c3 100644 --- a/src/main/java/tools/packets/Fishing.java +++ b/src/main/java/tools/packets/Fishing.java @@ -119,7 +119,7 @@ public class Fishing { chr.getMap().dropMessage(6, chr.getName() + " found " + rewardStr); } - chr.announce(PacketCreator.showInfo(fishingEffect)); + chr.sendPacket(PacketCreator.showInfo(fishingEffect)); chr.getMap().broadcastMessage(chr, PacketCreator.showForeignInfo(chr.getId(), fishingEffect), false); } diff --git a/src/main/java/tools/packets/Wedding.java b/src/main/java/tools/packets/WeddingPackets.java similarity index 63% rename from src/main/java/tools/packets/Wedding.java rename to src/main/java/tools/packets/WeddingPackets.java index ab688c0e1c..cd0455d470 100644 --- a/src/main/java/tools/packets/Wedding.java +++ b/src/main/java/tools/packets/WeddingPackets.java @@ -8,9 +8,11 @@ package tools.packets; import client.MapleCharacter; import client.inventory.Item; +import net.opcodes.SendOpcode; +import net.packet.OutPacket; +import net.packet.Packet; import tools.PacketCreator; import tools.StringUtil; -import tools.data.output.MaplePacketLittleEndianWriter; import java.util.ArrayList; import java.util.List; @@ -22,15 +24,7 @@ import java.util.List; * * Wishlists edited by Drago (Dragohe4rt) */ -public class Wedding extends PacketCreator { - private static final short MARRIAGE_REQUEST = 0x48; - private static final short MARRIAGE_RESULT = 0x49; - private static final short WEDDING_GIFT_RESULT = 0x4A; - private static final short NOTIFY_MARRIED_PARTNER_MAP_TRANSFER = 0x4B; - private static final short WEDDING_PHOTO = 0x2B; - private static final short WEDDING_PROGRESS = 0x140; - private static final short WEDDING_CEREMONY_END = 0x141; - +public class WeddingPackets extends PacketCreator { /* 00000000 CWeddingMan struc ; (sizeof=0x104) 00000000 vfptr dd ? ; offset @@ -205,13 +199,12 @@ public class Wedding extends PacketCreator { * @param playerid * @return mplew */ - public static byte[] OnMarriageRequest(String name, int playerid) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(MARRIAGE_REQUEST); - mplew.write(0); //mode, 0 = engage, 1 = cancel, 2 = answer.. etc - mplew.writeMapleAsciiString(name); // name - mplew.writeInt(playerid); // playerid - return mplew.getPacket(); + public static Packet onMarriageRequest(String name, int playerid) { + OutPacket p = OutPacket.create(SendOpcode.MARRIAGE_REQUEST); + p.writeByte(0); //mode, 0 = engage, 1 = cancel, 2 = answer.. etc + p.writeString(name); // name + p.writeInt(playerid); // playerid + return p; } /** @@ -234,38 +227,37 @@ public class Wedding extends PacketCreator { * @param m_dwUsers The List of all MapleCharacter guests within the current cake map to be encoded * @return mplew (MaplePacket) Byte array to be converted and read for byte[]->ImageIO */ - public static byte[] OnTakePhoto(String ReservedGroomName, String ReservedBrideName, int m_dwField, List m_dwUsers) { // OnIFailedAtWeddingPhotos - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(WEDDING_PHOTO); // v53 header, convert -> v83 - mplew.writeMapleAsciiString(ReservedGroomName); - mplew.writeMapleAsciiString(ReservedBrideName); - mplew.writeInt(m_dwField); // field id? - mplew.writeInt(m_dwUsers.size()); + public static Packet onTakePhoto(String ReservedGroomName, String ReservedBrideName, int m_dwField, List m_dwUsers) { // OnIFailedAtWeddingPhotos + OutPacket p = OutPacket.create(SendOpcode.WEDDING_PHOTO);// v53 header, convert -> v83 + p.writeString(ReservedGroomName); + p.writeString(ReservedBrideName); + p.writeInt(m_dwField); // field id? + p.writeInt(m_dwUsers.size()); for (MapleCharacter guest : m_dwUsers) { // Begin Avatar Encoding - addCharLook(mplew, guest, false); // CUser::EncodeAvatar - mplew.writeInt(30000); // v20 = *(_DWORD *)(v13 + 2192) -- new groom marriage ID?? - mplew.writeInt(30000); // v20 = *(_DWORD *)(v13 + 2192) -- new bride marriage ID?? - mplew.writeMapleAsciiString(guest.getName()); - mplew.writeMapleAsciiString(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getName() : ""); - mplew.writeShort(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogoBG() : 0); - mplew.write(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogoBGColor() : 0); - mplew.writeShort(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogo() : 0); - mplew.write(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogoColor() : 0); - mplew.writeShort(guest.getPosition().x); // v18 = *(_DWORD *)(v13 + 3204); - mplew.writeShort(guest.getPosition().y); // v20 = *(_DWORD *)(v13 + 3208); + addCharLook(p, guest, false); // CUser::EncodeAvatar + p.writeInt(30000); // v20 = *(_DWORD *)(v13 + 2192) -- new groom marriage ID?? + p.writeInt(30000); // v20 = *(_DWORD *)(v13 + 2192) -- new bride marriage ID?? + p.writeString(guest.getName()); + p.writeString(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getName() : ""); + p.writeShort(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogoBG() : 0); + p.writeByte(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogoBGColor() : 0); + p.writeShort(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogo() : 0); + p.writeByte(guest.getGuildId() > 0 && guest.getGuild() != null ? guest.getGuild().getLogoColor() : 0); + p.writeShort(guest.getPosition().x); // v18 = *(_DWORD *)(v13 + 3204); + p.writeShort(guest.getPosition().y); // v20 = *(_DWORD *)(v13 + 3208); // Begin Screenshot Encoding - mplew.write(1); // // if ( *(_DWORD *)(v13 + 288) ) { COutPacket::Encode1(&thisa, v20); + p.writeByte(1); // // if ( *(_DWORD *)(v13 + 288) ) { COutPacket::Encode1(&thisa, v20); // CPet::EncodeScreenShotPacket(*(CPet **)(v13 + 288), &thisa); - mplew.writeInt(1); // dwTemplateID - mplew.writeMapleAsciiString(guest.getName()); // m_sName - mplew.writeShort(guest.getPosition().x); // m_ptCurPos.x - mplew.writeShort(guest.getPosition().y); // m_ptCurPos.y - mplew.write(guest.getStance()); // guest.m_bMoveAction + p.writeInt(1); // dwTemplateID + p.writeString(guest.getName()); // m_sName + p.writeShort(guest.getPosition().x); // m_ptCurPos.x + p.writeShort(guest.getPosition().y); // m_ptCurPos.y + p.writeByte(guest.getStance()); // guest.m_bMoveAction } - return mplew.getPacket(); + return p; } /** @@ -276,25 +268,24 @@ public class Wedding extends PacketCreator { * @param wedding * @return mplew */ - public static byte[] OnMarriageResult(int marriageId, MapleCharacter chr, boolean wedding) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(MARRIAGE_RESULT); - mplew.write(11); - mplew.writeInt(marriageId); - mplew.writeInt(chr.getGender() == 0 ? chr.getId() : chr.getPartnerId()); - mplew.writeInt(chr.getGender() == 0 ? chr.getPartnerId() : chr.getId()); - mplew.writeShort(wedding ? 3 : 1); + public static Packet OnMarriageResult(int marriageId, MapleCharacter chr, boolean wedding) { + OutPacket p = OutPacket.create(SendOpcode.MARRIAGE_RESULT); + p.writeByte(11); + p.writeInt(marriageId); + p.writeInt(chr.getGender() == 0 ? chr.getId() : chr.getPartnerId()); + p.writeInt(chr.getGender() == 0 ? chr.getPartnerId() : chr.getId()); + p.writeShort(wedding ? 3 : 1); if (wedding) { - mplew.writeInt(chr.getMarriageItemId()); - mplew.writeInt(chr.getMarriageItemId()); + p.writeInt(chr.getMarriageItemId()); + p.writeInt(chr.getMarriageItemId()); } else { - mplew.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) - mplew.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) + p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) + p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement) } - mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getName() : MapleCharacter.getNameById(chr.getPartnerId()), '\0', 13)); - mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? MapleCharacter.getNameById(chr.getPartnerId()) : chr.getName(), '\0', 13)); + p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getName() : MapleCharacter.getNameById(chr.getPartnerId()), '\0', 13)); + p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? MapleCharacter.getNameById(chr.getPartnerId()) : chr.getName(), '\0', 13)); - return mplew.getPacket(); + return p; } /** @@ -303,15 +294,14 @@ public class Wedding extends PacketCreator { * @param msg * @return mplew */ - public static byte[] OnMarriageResult(final byte msg) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(MARRIAGE_RESULT); - mplew.write(msg); + public static Packet OnMarriageResult(final byte msg) { + OutPacket p = OutPacket.create(SendOpcode.MARRIAGE_RESULT); + p.writeByte(msg); if (msg == 36) { - mplew.write(1); - mplew.writeMapleAsciiString("You are now engaged."); + p.writeByte(1); + p.writeString("You are now engaged."); } - return mplew.getPacket(); + return p; } /** @@ -321,13 +311,11 @@ public class Wedding extends PacketCreator { * @param mapid * @return mplew */ - public static byte[] OnNotifyWeddingPartnerTransfer(int partner, int mapid) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(NOTIFY_MARRIED_PARTNER_MAP_TRANSFER); - mplew.writeInt(mapid); - mplew.writeInt(partner); - - return mplew.getPacket(); + public static Packet OnNotifyWeddingPartnerTransfer(int partner, int mapid) { + OutPacket p = OutPacket.create(SendOpcode.NOTIFY_MARRIED_PARTNER_MAP_TRANSFER); + p.writeInt(mapid); + p.writeInt(partner); + return p; } /** @@ -335,21 +323,20 @@ public class Wedding extends PacketCreator { * CField_Wedding::OnWeddingProgress - Stages * CField_Wedding::OnWeddingCeremonyEnd - Wedding Ceremony Effect * - * @param SetBlessEffect + * @param setBlessEffect * @param groom * @param bride * @param step * @return mplew */ - public static byte[] OnWeddingProgress(boolean SetBlessEffect, int groom, int bride, byte step) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SetBlessEffect ? WEDDING_CEREMONY_END : WEDDING_PROGRESS); - if (!SetBlessEffect) { // in order for ceremony packet to send, byte step = 2 must be sent first - mplew.write(step); + public static Packet OnWeddingProgress(boolean setBlessEffect, int groom, int bride, byte step) { + OutPacket p = OutPacket.create(setBlessEffect ? SendOpcode.WEDDING_CEREMONY_END : SendOpcode.WEDDING_PROGRESS); + if (!setBlessEffect) { // in order for ceremony packet to send, byte step = 2 must be sent first + p.writeByte(step); } - mplew.writeInt(groom); - mplew.writeInt(bride); - return mplew.getPacket(); + p.writeInt(groom); + p.writeInt(bride); + return p; } /** @@ -359,21 +346,19 @@ public class Wedding extends PacketCreator { * @param bride * @return mplew */ - public static byte[] sendWeddingInvitation(String groom, String bride) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(MARRIAGE_RESULT); - mplew.write(15); - mplew.writeMapleAsciiString(groom); - mplew.writeMapleAsciiString(bride); - mplew.writeShort(1); // 0 = Cathedral Normal?, 1 = Cathedral Premium?, 2 = Chapel Normal? - return mplew.getPacket(); + public static Packet sendWeddingInvitation(String groom, String bride) { + OutPacket p = OutPacket.create(SendOpcode.MARRIAGE_RESULT); + p.writeByte(15); + p.writeString(groom); + p.writeString(bride); + p.writeShort(1); // 0 = Cathedral Normal?, 1 = Cathedral Premium?, 2 = Chapel Normal? + return p; } - public static byte[] sendWishList() { // fuck my life - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(MARRIAGE_REQUEST); - mplew.write(9); - return mplew.getPacket(); + public static Packet sendWishList() { // fuck my life + OutPacket p = OutPacket.create(SendOpcode.MARRIAGE_REQUEST); + p.writeByte(9); + return p; } /** @@ -384,19 +369,18 @@ public class Wedding extends PacketCreator { * @param items * @return mplew */ - public static byte[] OnWeddingGiftResult(byte mode, List itemnames, List items) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(WEDDING_GIFT_RESULT); - mplew.write(mode); + public static Packet onWeddingGiftResult(byte mode, List itemnames, List items) { + OutPacket p = OutPacket.create(SendOpcode.WEDDING_GIFT_RESULT); + p.writeByte(mode); switch (mode) { case 0xC: // 12 : You cannot give more than one present for each wishlist case 0xE: // 14 : Failed to send the gift. break; case 0x09: { // Load Wedding Registry - mplew.write(itemnames.size()); + p.writeByte(itemnames.size()); for (String names : itemnames) { - mplew.writeMapleAsciiString(names); + p.writeString(names); } break; } @@ -405,15 +389,15 @@ public class Wedding extends PacketCreator { case 0xB: { // Add Item to Wedding Registry // 11 : You have sent a gift | | 13 : Failed to send the gift. | if (mode == 0xB) { - mplew.write(itemnames.size()); + p.writeByte(itemnames.size()); for (String names : itemnames) { - mplew.writeMapleAsciiString(names); + p.writeString(names); } } - mplew.writeLong(32); - mplew.write(items.size()); + p.writeLong(32); + p.writeByte(items.size()); for (Item item : items) { - addItemInfo(mplew, item, true); + addItemInfo(p, item, true); } break; } @@ -422,6 +406,6 @@ public class Wedding extends PacketCreator { break; } } - return mplew.getPacket(); + return p; } } \ No newline at end of file diff --git a/src/test/java/net/packet/ByteBufOutPacketTest.java b/src/test/java/net/packet/ByteBufOutPacketTest.java index c0fa148e08..a7d0611500 100644 --- a/src/test/java/net/packet/ByteBufOutPacketTest.java +++ b/src/test/java/net/packet/ByteBufOutPacketTest.java @@ -176,9 +176,9 @@ class ByteBufOutPacketTest { } @Test - void writePoint() { + void writePosition() { final Point writtenPoint = new Point(23, 42); - outPacket.writePoint(writtenPoint); + outPacket.writePos(writtenPoint); ByteBuf wrapped = wrapExplicitlyWrittenBytes(outPacket); short readX = wrapped.readShortLE();