Advertisement
Guest User

Untitled

a guest
Feb 17th, 2013
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 22.04 KB | None | 0 0
  1.     @Override
  2.     public void messageReceived(final IoSession session, final Object message) throws Exception {
  3.     final SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream((byte[]) message));
  4.     final RecvPacketOpcode code = Header.get(slea.readShort());
  5.  
  6.     if (code != null) {
  7.         final Client c = (Client) session.getAttribute(StringPool.CLIENT_KEY);
  8.  
  9.         if (ServerConstants.enableHandledPacketLogging) {// Debugging
  10.         if (!code.isIgnorePacketSpamOrLog()) {
  11.             System.out.println(String.format("[%s] %s\nString : %s", code.name(), HexTool.toString((byte[]) message), HexTool.toStringFromAscii((byte[]) message)));
  12.         }
  13.         }
  14.         if (code.NeedsChecking()) {
  15.         if (!c.isLoggedIn()) {
  16.             session.close(true);
  17.             return;
  18.         }
  19.         /*
  20.          * if ((code.isCSOperation() && type == ServerType.CHANNEL) ||
  21.          * (!code.isCSOperation() && type != ServerType.CHANNEL)) {
  22.          * return; }
  23.          */
  24.         }
  25.         final long cTime = System.currentTimeMillis();
  26.         final long Differences = cTime - c.LastCapturedTimeMillis_500MSThreshold;
  27.         if (Differences < 500) { // within 500ms
  28.         if (!code.isIgnorePacketSpamOrLog() && !c.FlagPendingDisconnection) { // Not move life, mob, summon, dragon
  29.             c.PacketSpamCountWithinHalfSecond++;
  30.  
  31.             // 70 should be the acceptable level, but we will test with 200 first to make sure it doesn't affect laggers.
  32.             if (c.PacketSpamCountWithinHalfSecond > 200) { // Spam > 70 packet within 500ms = dc.
  33.             c.FlagPendingDisconnection();
  34.  
  35.             ServerLog.RegisterForLogging(ServerLogType.PacketSpam,
  36.                 String.format("[%s 0x%s] CharOrAccId : %s, Field : %s, Count : %d\nData : %s\nString : %s",
  37.                 code.name(),
  38.                 Integer.toHexString(code.getValue()),
  39.                 c.getPlayer() != null ? c.getPlayer().getName() : "Accid=" + String.valueOf(c.getAccID()),
  40.                 c.getPlayer() != null ? MapleMapFactory.getFullMapName(c.getPlayer().getMapId()) : "-1",
  41.                 c.PacketSpamCountWithinHalfSecond,
  42.                 HexTool.toString((byte[]) message),
  43.                 HexTool.toStringFromAscii((byte[]) message)));
  44.             }
  45.         }
  46.         } else {
  47.         c.LastCapturedTimeMillis_500MSThreshold = cTime;
  48.         c.PacketSpamCountWithinHalfSecond = 0;
  49.         }
  50.         // This is also used throughout the packet handler to determine the current time instead of calling System.currentTimeMillis() again
  51.         c.LastCapturedTimeMillis = cTime;
  52. //      System.out.println("Differences : "+(Differences)+", count : "+c.PacketSpamCountWithinHalfSecond+", cTime : " + cTime);
  53.  
  54.         handlePacket(code, slea, c, type);
  55.     } else if (ServerConstants.enableUnhandledPacketLogging) { // Console output part for debugging
  56.         System.out.println(String.format("[Unhandled Packet] %s\nString : %s", HexTool.toString((byte[]) message), HexTool.toStringFromAscii((byte[]) message)));
  57.     }
  58.     }
  59.  
  60.     public static final void handlePacket(final RecvPacketOpcode header, final SeekableLittleEndianAccessor slea, final Client c, final ServerType type) {
  61.     switch (header) {
  62.         case CREATE_CHAR_IN_GAME:
  63.         CreateCygnusHandler.handlePacket(slea, c, c.getPlayer());
  64.         break;
  65.         case PACKET_ERROR:
  66.         if (ServerConstants.VER >= 107) {
  67.             if (c.SentCrashDump) { // It can't be sent twice, chances are that its packet editing.. maybe we should auto ban
  68.             c.closeSession();
  69.             return;
  70.             }
  71.             c.SentCrashDump = true;
  72.  
  73.             slea.skip(12); // Contains some timestamp data..
  74.             final RecvPacketOpcode code = Header.get(slea.readShort());
  75.             if (code != null) {
  76.             byte[] DataRead;
  77.             if (slea.available() > 500) {
  78.                 DataRead = slea.read(500);
  79.             } else {
  80.                 DataRead = slea.read((int) slea.available());
  81.             }
  82.             ServerLog.RegisterForLogging(ServerLogType.InvalidPacket,
  83.                 String.format("[%s 0x%s] [Data : %s]\nAscii : %s",
  84.                 code.name(),
  85.                 Integer.toHexString(code.getValue()),
  86.                 HexTool.toString(DataRead),
  87.                 HexTool.toStringFromAscii(DataRead)));
  88.             }
  89.         }
  90.         break;
  91.         case PONG:
  92.         boolean InvalidWindowTitle = false;
  93.         if (ServerConstants.isOnCommericalServer) {
  94.             InvalidWindowTitle = slea.readByte() > 0;
  95.         }
  96.         c.pongReceived(type, InvalidWindowTitle);
  97.         break;
  98.         case STRANGE_DATA:
  99.         // Does nothing for now, HackShield's heartbeat
  100.         break;
  101.         // END OF LOGIN SERVER
  102.         case CHANGE_CHANNEL:
  103.         final byte TargetChannel = slea.readByte();
  104.         final int TickCount = slea.readInt();
  105.         InterServerHandler.ChangeChannel(TargetChannel, TickCount, false, c, c.getPlayer());
  106.         break;
  107.         case PLAYER_LOGGEDIN:
  108.         if (type == ServerType.CHANNEL) {
  109.             InterServerHandler.Loggedin(slea, c);
  110.         } else {
  111.             CashShopOperation.EnterCS(slea, c);
  112.         }
  113.         break;
  114.         case ENTER_CASH_SHOP:
  115.         InterServerHandler.EnterCS(c, c.getPlayer());
  116.         break;
  117.         case ENTER_MTS:
  118.         InterServerHandler.EnterMTS(c, c.getPlayer());
  119.         break;
  120.         case MTS_OP:
  121.         MTSOperation.MTSHandler(slea, c, c.getPlayer());
  122.         break;
  123.         case ANDROID_MOVE:
  124.         PlayerHandler.MoveAndroid(slea, c, c.getPlayer());
  125.         break;
  126.         case MOVE_PLAYER:
  127.         PlayerHandler.MovePlayer(slea, c, c.getPlayer());
  128.         break;
  129.         case CHAR_INFO_REQUEST:
  130.         PlayerHandler.CharInfoRequest(slea, c, c.getPlayer());
  131.         break;
  132.         case CLOSE_RANGE_ATTACK:
  133.         PlayerHandler.closeRangeAttack(slea, c, c.getPlayer());
  134.         break;
  135.         case RANGED_ATTACK:
  136.         PlayerHandler.rangedAttack(slea, c, c.getPlayer());
  137.         break;
  138.         case MAGIC_ATTACK:
  139.         PlayerHandler.MagicAtk(slea, c, c.getPlayer());
  140.         break;
  141.         case SPECIAL_MOVE:
  142.         PlayerHandler.SpecialMove(slea, c, c.getPlayer());
  143.         break;
  144.         case UPDATE_TICKCOUNT:
  145.         if (ServerConstants.VER >= 104) {
  146.             PlayerHandler.UpdateTickCount(slea, c.getPlayer());
  147.         }
  148.         break;
  149.         case PASSIVE_ENERGY:
  150.         PlayerHandler.PassiveAtk(slea, c, c.getPlayer());
  151.         break;
  152.         case FACE_EXPRESSION:
  153.         PlayerHandler.ChangeEmotion(slea.readInt(), c.getPlayer());
  154.         break;
  155.         case TAKE_DAMAGE:
  156.         PlayerHandler.TakeDamage(slea, c, c.getPlayer());
  157.         break;
  158.         case HEAL_OVER_TIME:
  159.         PlayerHandler.Heal(slea, c.getPlayer());
  160.         break;
  161.         case CANCEL_BUFF:
  162.         PlayerHandler.CancelBuffHandler(slea, c.getPlayer());
  163.         break;
  164.         case MECH_UNCHANGE:
  165.         PlayerHandler.CancelBuffMech_Handler(slea, c.getPlayer());
  166.         break;
  167.         case CANCEL_ITEM_EFFECT:
  168.         PlayerHandler.CancelItemEffect(slea.readInt(), c.getPlayer());
  169.         break;
  170.         case USE_CHAIR:
  171.         PlayerHandler.UseChair(slea.readInt(), c, c.getPlayer());
  172.         break;
  173.         case CANCEL_CHAIR:
  174.         PlayerHandler.CancelChair(slea.readShort(), c, c.getPlayer());
  175.         break;
  176.         case USE_ITEMEFFECT:
  177.         PlayerHandler.UseItemEffect(slea.readInt(), c, c.getPlayer());
  178.         break;
  179.         case USE_FISHING:
  180.         FishingHandler.UseFishing(slea, c);
  181.         break;
  182.         case SKILL_EFFECT:
  183.         PlayerHandler.SkillEffect(slea, c.getPlayer());
  184.         break;
  185.         case MESO_DROP:
  186.         PlayerHandler.DropMeso(slea, c, c.getPlayer());
  187.         break;
  188.         case WHEEL_OF_FORTUNE:
  189.         PlayerHandler.MiscItemHandler(slea.readInt(), c.getPlayer());
  190.         break;
  191.         case MONSTER_BOOK_COVER:
  192.         PlayerHandler.ChangeMonsterBookCover(slea.readInt(), c, c.getPlayer());
  193.         break;
  194.         case CHANGE_KEYMAP:
  195.         PlayerHandler.ChangeKeymap(slea, c.getPlayer());
  196.         break;
  197.         case CHANGE_MAP:
  198.         if (type == ServerType.CHANNEL) {
  199.             PlayerHandler.ChangeMap(slea, c, c.getPlayer());
  200.         } else {
  201.             CashShopOperation.LeaveCS(slea, c, c.getPlayer());
  202.         }
  203.         break;
  204.         case CHANGE_MAP_SPECIAL:
  205.         PlayerHandler.ChangeMapSpecial(slea, c, c.getPlayer());
  206.         break;
  207.         case USE_INNER_PORTAL:
  208.         PlayerHandler.InnerPortal(slea, c, c.getPlayer());
  209.         break;
  210.         case TROCK_ADD_MAP:
  211.         PlayerHandler.TrockAddMap(slea, c, c.getPlayer());
  212.         break;
  213.         case ARAN_COMBO:
  214.         PlayerHandler.AranCombo(c, c.getPlayer(), 1);
  215.         break;
  216.         case SKILL_MACRO:
  217.         PlayerHandler.ChangeSkillMacro(slea, c, c.getPlayer());
  218.         break;
  219.         case FOLLOW_CHARCTER:
  220.         PlayersHandler.FollowCharacter(slea, c, c.getPlayer());
  221.         break;
  222.         case REPORT:
  223.         PlayersHandler.ReportPlayer(slea, c, c.getPlayer());
  224.         break;
  225.         case GIVE_FAME:
  226.         PlayersHandler.GiveFame(slea, c, c.getPlayer());
  227.         break;
  228.         case TRANSFORM_PLAYER:
  229.         PlayersHandler.TransformPlayer(slea, c, c.getPlayer());
  230.         break;
  231.         case NOTE_ACTION:
  232.         PlayersHandler.Note(slea, c.getPlayer());
  233.         break;
  234.         case USE_DOOR:
  235.         PlayersHandler.UseDoor(slea, c.getPlayer());
  236.         break;
  237.         case USE_MECHANIC_DOOR:
  238.         PlayersHandler.UseMechanicDoor(slea, c, c.getPlayer());
  239.         break;
  240.         case DAMAGE_REACTOR:
  241.         PlayersHandler.HitReactor(slea, c);
  242.         break;
  243.         case CLICK_REACTOR:
  244.         PlayersHandler.ClickReactor(slea, c, c.getPlayer());
  245.         break;
  246.         case MASTERIA_TRAP:
  247.         PlayersHandler.Masteria_Trap(slea, c.getPlayer());
  248.         break;
  249.         case CLOSE_CHALKBOARD:
  250.         c.getPlayer().setChalkboard(null);
  251.         break;
  252.         case ITEM_MAKER:
  253.         ItemMakerHandler.ItemMaker(slea, c, c.getPlayer());
  254.         break;
  255.         case REPAIR_ITEM:
  256.         ItemRepairShopHandler.OnRepairItem(slea, c, c.getPlayer());
  257.         break;
  258.         case INVENTORY_GROUP:
  259.         InventoryHandler.ItemGroup(slea, c);
  260.         break;
  261.         case INVENTORY_SORT:
  262.         InventoryHandler.ItemSort(slea, c);
  263.         break;
  264.         case ITEM_MOVE:
  265.         InventoryHandler.ItemMove(slea, c, c.getPlayer());
  266.         break;
  267.         case ITEM_MOVE_BAG:
  268.         if (ServerConstants.isChaosUpdate) {
  269.             InventoryHandler.ItemMove_Bag(slea, c);
  270.         }
  271.         break;
  272.         case ITEM_SWITCH_BAG:
  273.         if (ServerConstants.isChaosUpdate) {
  274.             InventoryHandler.ItemMoveSwitch_Bag(slea, c);
  275.         }
  276.         break;
  277.         case ITEM_PICKUP:
  278.         InventoryHandler.Pickup_Player(slea, c, c.getPlayer());
  279.         break;
  280.         case USE_CASH_ITEM:
  281.         InventoryHandler.UseCashItem(slea, c, c.getPlayer());
  282.         break;
  283.         case USE_ITEM:
  284.         InventoryHandler.UseItem(slea, c, c.getPlayer());
  285.         break;
  286.         case USE_SCRIPTED_NPC_ITEM:
  287.         InventoryHandler.UseScriptedNPCItem(slea, c, c.getPlayer());
  288.         break;
  289.         case USE_PROFESSION_RECIPE:
  290.         if (ServerConstants.isChaosUpdate) {
  291.             InventoryHandler.UseProfessionsRecipe(slea, c, c.getPlayer());
  292.         }
  293.         break;
  294.         case USE_RETURN_SCROLL:
  295.         InventoryHandler.UseReturnScroll(slea, c, c.getPlayer());
  296.         break;
  297.         case USE_UPGRADE_SCROLL:
  298.         InventoryHandler.UseUpgradeScroll(slea, c, c.getPlayer());
  299.         break;
  300.         case USE_PROTECTION_SCROLL:
  301.         if (ServerConstants.VER >= 110) {
  302.             InventoryHandler.UseProtectionScroll(slea, c, c.getPlayer());
  303.         }
  304.         break;
  305.         case USE_ENCHANTMENT_SCROLL:
  306.         InventoryHandler.UseEnhancementScroll(slea, c, c.getPlayer());
  307.         break;
  308.         case USE_POTENTIAL_SCROLL:
  309.         InventoryHandler.UsePotentialScroll(slea, c, c.getPlayer());
  310.         break;
  311.         case USE_POTENTIAL_SEAL:
  312.         InventoryHandler.UsePotentialSeal(slea, c, c.getPlayer());
  313.         break;
  314.         case OPEN_HERB_BAG:
  315.         if (ServerConstants.isChaosUpdate) {
  316.             InventoryHandler.OpenBag(slea, c, c.getPlayer());
  317.         }
  318.         break;
  319.         case MAGNIFYING_GLASS:
  320.         InventoryHandler.UseMagnifyingGlass(slea, c, c.getPlayer());
  321.         break;
  322.         case USE_SUMMON_BAG:
  323.         InventoryHandler.UseSummonBag(slea, c, c.getPlayer());
  324.         break;
  325.         case USE_TREASUER_CHEST:
  326.         InventoryHandler.UseTreasureChest(slea, c, c.getPlayer());
  327.         break;
  328.         case USE_SKILL_BOOK:
  329.         InventoryHandler.UseSkillBook(slea, c, c.getPlayer());
  330.         break;
  331.         case USE_SKILLPOINT_RESET:
  332.         InventoryHandler.UseSPReset(slea, c, c.getPlayer());
  333.         break;
  334.         case USE_CATCH_ITEM:
  335.         InventoryHandler.UseCatchItem(slea, c, c.getPlayer());
  336.         break;
  337.         case USE_MOUNT_FOOD:
  338.         InventoryHandler.UseMountFood(slea, c, c.getPlayer());
  339.         break;
  340.         case REWARD_ITEM:
  341.         InventoryHandler.UseRewardItem(slea, c, c.getPlayer());
  342.         break;
  343.         case USE_GOLDEN_HAMMER:
  344.         if (ServerConstants.VER >= 114) {
  345.             InventoryHandler.UseGoldenHammer(slea, c, c.getPlayer());
  346.         }
  347.         break;
  348.         case GOLDEN_HAMMER_SMASH:
  349.         if (ServerConstants.VER >= 114) {
  350.             InventoryHandler.HammerSmash(slea, c, c.getPlayer());
  351.         }
  352.         break;
  353.         case ESCORT_MESSAGE:
  354.         EscortMonsterHandler.EscortMessage(slea, c, c.getPlayer());
  355.         break;
  356.         case REQUEST_ESCORT_MOVEMENT:
  357.         EscortMonsterHandler.EscortReq(slea, c, c.getPlayer());
  358.         break;
  359.         case ANTI_BOT_MOB_TELE:
  360.         MobHandler.AntiBotMobTele(slea, c, c.getPlayer());
  361.         break;
  362.         case HYPNOTIZE_DMG:
  363.         MobHandler.HypnotizeDmg(slea, c.getPlayer());
  364.         break;
  365.         case MOVE_LIFE:
  366.         MobHandler.MoveMonster(slea, c, c.getPlayer());
  367.         break;
  368.         case AUTO_AGGRO:
  369.         MobHandler.AutoAggro(slea.readInt(), c.getPlayer());
  370.         break;
  371.         case FRIENDLY_DAMAGE:
  372.         MobHandler.FriendlyDamage(slea, c.getPlayer());
  373.         break;
  374.         case MONSTER_TURNCOAT_ATTACK:
  375.         MobHandler.MonsterTurncoatAttack(slea, c, c.getPlayer());
  376.         break;
  377.         case MONSTER_BOMB_SKILL:
  378.         MobHandler.MonsterBombSkill(slea, c, c.getPlayer());
  379.         break;
  380.         case MONSTER_BOMB:
  381.         MobHandler.MonsterBomb(slea.readInt(), c.getPlayer());
  382.         break;
  383.         case NPC_SHOP:
  384.         NPCHandler.NPCShop(slea, c, c.getPlayer());
  385.         break;
  386.         case NPC_TALK:
  387.         NPCHandler.NPCTalk(slea, c, c.getPlayer());
  388.         break;
  389.         case NPC_TALK_MORE:
  390.         NPCHandler.NPCMoreTalk(slea, c);
  391.         break;
  392.         case NPC_ACTION:
  393.         NPCHandler.NPCAnimation(slea, c);
  394.         break;
  395.         case QUEST_ACTION:
  396.         NPCHandler.QuestAction(slea, c, c.getPlayer());
  397.         break;
  398.         case QUEST_REISSUE_MEDAL:
  399.         NPCHandler.QuestReissueMedal(slea, c, c.getPlayer());
  400.         break;
  401.         case UPDATE_QUEST:
  402.         NPCHandler.UpdateQuest(slea, c.getPlayer());
  403.         break;
  404.         case USE_ITEM_QUEST:
  405.         NPCHandler.UseItemQuest(slea, c, c.getPlayer());
  406.         break;
  407.         case CANCEL_ITEM_QUEST:
  408.         NPCHandler.CancelItemQuest(slea, c, c.getPlayer());
  409.         break;
  410.         case ITEM_QUEST_DATA_REPLACE:
  411.         NPCHandler.ItemQuestDataReplace(slea, c, c.getPlayer());
  412.         break;
  413.         case STORAGE:
  414.         NPCHandler.Storage(slea, c, c.getPlayer());
  415.         break;
  416.         case GENERAL_CHAT:
  417.         ChatHandler.GeneralChat(slea, c, c.getPlayer());
  418.         break;
  419.         case PARTYCHAT:
  420.         ChatHandler.Others(slea, c, c.getPlayer());
  421.         break;
  422.         case WHISPER:
  423.         ChatHandler.Whisper_Find(slea, c, c.getPlayer());
  424.         break;
  425.         case MESSENGER:
  426.         ChatHandler.Messenger(slea, c);
  427.         break;
  428.         case AUTO_ASSIGN_AP:
  429.         StatsHandling.AutoAssignAP(slea, c, c.getPlayer());
  430.         break;
  431.         case DISTRIBUTE_AP:
  432.         StatsHandling.DistributeAP(slea, c, c.getPlayer());
  433.         break;
  434.         case DISTRIBUTE_SP:
  435.         StatsHandling.DistributeSP(slea, c, c.getPlayer());
  436.         break;
  437.         case PLAYER_INTERACTION:
  438.         PlayerInteractionHandler.PlayerInteraction(slea, c, c.getPlayer());
  439.         break;
  440.         case GUILD_OPERATION:
  441.         GuildHandler.Guild(slea, c, c.getPlayer());
  442.         break;
  443.         case DENY_GUILD_REQUEST:
  444.         slea.skip(1);
  445.         GuildHandler.DenyGuildRequest(slea.readMapleAsciiString(), c);
  446.         break;
  447.         case ALLIANCE_OPERATION:
  448.         AllianceHandler.AllianceOperation(slea, c, false);
  449.         break;
  450.         case DENY_ALLIANCE_REQUEST:
  451.         AllianceHandler.AllianceOperation(slea, c, true);
  452.         break;
  453.         case BBS_OPERATION:
  454.         BBSHandler.BBSOperation(slea, c);
  455.         break;
  456.         case DISCONNECT_USER: // Some marker sent when player disconnected, no idea what it is used for
  457.         byte data = slea.readByte();
  458.         if (data > 0 && c.getPlayer() != null) {
  459. //          System.out.println("Disconnect user invoked with : " + data);
  460. //          c.getSession().close();
  461. //      } else {
  462. //          System.out.println("2 Disconnect user invoked with : " + data);
  463.         }
  464.         break;
  465.         case REQUEST_SELF_FAMILY:
  466.         FamilyHandler.RequestSelfFamily(c, c.getPlayer());
  467.         break;
  468.         case REQUEST_FAMILY:
  469.         FamilyHandler.RequestFamily(slea, c, c.getPlayer());
  470.         break;
  471.         case REQUEST_FAMILY_ADD:
  472.         FamilyHandler.AddFamily(slea, c, c.getPlayer());
  473.         break;
  474.         case FAMILY_CANCEL:
  475.         FamilyHandler.CancelFamily(slea, c, c.getPlayer());
  476.         break;
  477.         case FAMILY_JOIN:
  478.         FamilyHandler.JoinFamily(slea, c, c.getPlayer());
  479.         break;
  480.         case FAMILY_ENTITLEMENT:
  481.         FamilyHandler.Entitlement(slea, c, c.getPlayer());
  482.         break;
  483.         case PARTY_SEARCH:
  484.         PartyHandler.PartySearch(slea, c, c.getPlayer());
  485.         break;
  486.         case PARTY_SEARCH_CANCEL:
  487.         PartyHandler.CancelPartySearch(c.getPlayer());
  488.         break;
  489.         case EXPEDITION:
  490.         PartyHandler.Expedition(slea, c, c.getPlayer());
  491.         break;
  492.         case EXPEDITION_LISTING:
  493.         PartyHandler.ExpeditionListing(slea, c, c.getPlayer());
  494.         break;
  495.         case PARTY_OPERATION:
  496.         PartyHandler.PartyOperation(slea, c);
  497.         break;
  498.         case PARTY_INVITATION:
  499.         PartyHandler.PartyInvitation(slea, c, c.getPlayer());
  500.         break;
  501.         case DENY_PARTY_REQUEST:
  502.         PartyHandler.DenyPartyRequest(slea, c);
  503.         break;
  504.         case BUDDYLIST_MODIFY:
  505.         BuddyListHandler.BuddyOperation(slea, c);
  506.         break;
  507.         case IMP_POT_USE:
  508.         if (ServerConstants.isChaosUpdate) {
  509.             Prof_ImpPotHandler.UsePot(slea, c, c.getPlayer());
  510.         }
  511.         break;
  512.         case IMP_POT_CLEAR:
  513.         if (ServerConstants.isChaosUpdate) {
  514.             Prof_ImpPotHandler.ClearPot(slea, c, c.getPlayer());
  515.         }
  516.         break;
  517.         case IMP_POT_FEED:
  518.         if (ServerConstants.isChaosUpdate) {
  519.             Prof_ImpPotHandler.FeedPot(slea, c, c.getPlayer());
  520.         }
  521.         break;
  522.         case IMP_POT_CURE:
  523.         if (ServerConstants.isChaosUpdate) {
  524.             Prof_ImpPotHandler.CurePot(slea, c, c.getPlayer());
  525.         }
  526.         break;
  527.         case IMP_POT_REWARD:
  528.         if (ServerConstants.isChaosUpdate) {
  529.             Prof_ImpPotHandler.RewardPot(slea, c, c.getPlayer());
  530.         }
  531.         break;
  532.         case USE_PROFESSION_EXTRACTOR:
  533.         if (ServerConstants.isChaosUpdate) {
  534.             ProfessionsHandler.AlchemistExtractor(slea, c, c.getPlayer());
  535.         }
  536.         break;
  537.         case PROFESSIONS_CRAFT:
  538.         if (ServerConstants.isChaosUpdate) {
  539.             ProfessionsHandler.ProfessionsCraft(slea, c, c.getPlayer());
  540.         }
  541.         break;
  542.         case PROFESSIONS_ANIMATION:
  543.         if (ServerConstants.isChaosUpdate) {
  544.             ProfessionsHandler.ProfessionsAnimation(slea, c, c.getPlayer());
  545.         }
  546.         break;
  547.         case PROFESSIONS_EXTRACT:
  548.         if (ServerConstants.isChaosUpdate) {
  549.             ProfessionsHandler.ProfessionsExtract(slea, c, c.getPlayer());
  550.         }
  551.         break;
  552.         case PROFESSIONS_CRAFTING_STATE:
  553.         if (ServerConstants.isChaosUpdate) {
  554.             ProfessionsHandler.ProfessionsCraftingState(slea, c, c.getPlayer());
  555.         }
  556.         break;
  557.         case START_PROFESSION_USE:
  558.         if (ServerConstants.isChaosUpdate) {
  559.             ProfessionsHandler.StartProfessionHerbOrVien(slea, c, c.getPlayer());
  560.         }
  561.         break;
  562.         case END_PROFESSION_USE:
  563.         if (ServerConstants.isChaosUpdate) {
  564.             ProfessionsHandler.EndProfessionHerbOrVien(slea, c, c.getPlayer());
  565.         }
  566.         break;
  567.         case PVP_ATTACK:
  568.         if (ServerConstants.isChaosUpdate) {
  569.             PvPHandler.PvpAttack(slea, c, c.getPlayer());
  570.         }
  571.         break;
  572.         case PVP_ENTER:
  573.         if (ServerConstants.isChaosUpdate) {
  574.             PvPHandler.PvpEnter(slea, c, c.getPlayer());
  575.         }
  576.         break;
  577.         case PVP_LEAVE:
  578.         if (ServerConstants.isChaosUpdate) {
  579.             PvPHandler.PvpLeave(slea, c, c.getPlayer());
  580.         }
  581.         break;
  582.         case REQUEST_PVP_STATUS:
  583.         if (ServerConstants.isChaosUpdate) {
  584.             PvPHandler.PvpStatusRequest(slea, c, c.getPlayer());
  585.         }
  586.         break;
  587.         case CYGNUS_SUMMON:
  588.         UserInterfaceHandler.CygnusSummon_NPCRequest(c);
  589.         break;
  590.         case CANTICHEAT_IV:
  591.         CRC_AntiCheatHandler.CheckIVHeader(slea, c, c.getPlayer());
  592.         break;
  593.         case CRC_ANTICHEAT:
  594.         CRC_AntiCheatHandler.OnMapCRCFailed(c);
  595.         break;
  596.         case LIE_DETECTOR_TEST:
  597.         CAntiCheatHandler.OnUserRequestedLieDetector(slea, c, c.getPlayer());
  598.         break;
  599.         case LIE_DETECTOR_REPLY:
  600.         CAntiCheatHandler.OnLieDetectorFailed(slea, c, c.getPlayer());
  601.         break;
  602.         case SHIP_OBJECT:
  603.         UserInterfaceHandler.ShipObjectRequest(slea, c);
  604.         break;
  605.         case COCONUT_HARVEST:
  606.         CoconutHarvest.onCoconutPacket(slea, c, c.getPlayer());
  607.         break;
  608.         case SUCEESS_CHANGEMAP:
  609.         break;
  610.         case GAME_POLL_REPLY:
  611.         UserInterfaceHandler.InGame_Poll(slea, c);
  612.         break;
  613.         case BUY_CS_ITEM:
  614.         if (type == ServerType.CASHSHOP) {
  615.             CashShopOperation.BuyCashItem(slea, c, c.getPlayer());
  616.         } else {
  617.             c.closeSession();
  618.         }
  619.         break;
  620.         case COUPON_CODE:
  621.         if (type == ServerType.CASHSHOP) {
  622.             slea.skip(2);
  623.             CashShopOperation.CouponCode(slea.readMapleAsciiString(), c);
  624.         } else {
  625.             c.closeSession();
  626.         }
  627.         break;
  628.         case CS_UPDATE:
  629.         if (type == ServerType.CASHSHOP) {
  630.             CashShopOperation.CSUpdate(c, c.getPlayer());
  631.         } else {
  632.             c.closeSession();
  633.         }
  634.         break;
  635.         case DAMAGE_SUMMON:
  636.         SummonHandler.DamageSummon(slea, c.getPlayer());
  637.         break;
  638.         case MOVE_SUMMON:
  639.         SummonHandler.MoveSummon(slea, c.getPlayer());
  640.         break;
  641.         case SUMMON_ATTACK:
  642.         SummonHandler.SummonAttack(slea, c, c.getPlayer());
  643.         break;
  644.         case SUMMON_SPAWN:
  645.         SummonHandler.Summon_spawn(slea, c, c.getPlayer());
  646.         break;
  647.         case REMOVE_ROBOT:
  648.         SummonHandler.RemoveSummonRobot(slea, c, c.getPlayer());
  649.         break;
  650.         case MOVE_EVAN_DRAGON:
  651.         SummonHandler.Move_EvanSummon(slea, c, c.getPlayer());
  652.         break;
  653.         case SPAWN_PET:
  654.         PetHandler.SpawnPet(slea, c, c.getPlayer());
  655.         break;
  656.         case MOVE_PET:
  657.         PetHandler.MovePet(slea, c.getPlayer());
  658.         break;
  659.         case PET_CHAT:
  660.         PetHandler.PetChat(slea, c.getPlayer());
  661.         break;
  662.         case PET_COMMAND:
  663.         PetHandler.PetCommand(slea, c, c.getPlayer());
  664.         break;
  665.         case PET_FOOD:
  666.         PetHandler.PetFood(slea, c, c.getPlayer());
  667.         break;
  668.         case PET_LOOT:
  669.         InventoryHandler.Pickup_Pet(slea, c, c.getPlayer());
  670.         break;
  671.         case PET_AUTO_POT:
  672.         PetHandler.Pet_AutoPotion(slea, c, c.getPlayer());
  673.         break;
  674.         case MONSTER_CARNIVAL:
  675.         MonsterCarnivalHandler.MonsterCarnival(slea, c, c.getPlayer());
  676.         break;
  677.         case DUEY_ACTION:
  678.         DueyHandler.DueyOperation(slea, c, c.getPlayer());
  679.         break;
  680.         case OWL_MINERVA:
  681.         HiredMerchantHandler.OWL_MINERVA(slea, c, c.getPlayer());
  682.         break;
  683.         case OWL_MINERVA_ENTER:
  684.         HiredMerchantHandler.OWL_MINERVA_ENTER(slea, c, c.getPlayer());
  685.         break;
  686.         case USE_HIRED_MERCHANT:
  687.         HiredMerchantHandler.UseHiredMerchant(slea, c);
  688.         break;
  689.         case MERCH_ITEM_STORE:
  690.         HiredMerchantHandler.MerchantItemStore(slea, c, c.getPlayer());
  691.         break;
  692.         case ADMIN_SERV_MSG:
  693.         AdminCommand.onServMsgCommand(slea, c, c.getPlayer());
  694.         break;
  695.         case ADMIN_COMMAND:
  696.         AdminCommand.onCommand(slea, c, c.getPlayer());
  697.         break;
  698.         case WEDDING_ENGAGEMENT:
  699.         WeddingHandler.RequestEngagement(slea, c, c.getPlayer());
  700.         break;
  701.         case CANCEL_DEBUFF:
  702.         // Ignore for now
  703.         break;
  704.         case MAPLETV:
  705.         // ignore, not done
  706.         break;
  707.         default:
  708.         System.out.println(String.format("[UNHANDLED] Recv [%s] found", header.toString()));
  709.         break;
  710.     }
  711.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement