a97g

WorldPacketDecoder

Jul 8th, 2016
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 122.19 KB | None | 0 0
  1. package com.rs.net.decoders;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5.  
  6. import com.rs.Settings;
  7. import com.rs.cache.loaders.ItemDefinitions;
  8. import com.rs.game.Animation;
  9. import com.rs.game.World;
  10. import com.rs.game.WorldObject;
  11. import com.rs.game.WorldTile;
  12. import com.rs.game.item.FloorItem;
  13. import com.rs.game.item.Item;
  14. import com.rs.game.item.MagicOnItem;
  15. import com.rs.game.minigames.clanwars.ClanWars;
  16. import com.rs.game.minigames.creations.StealingCreation;
  17. import com.rs.game.minigames.duel.DuelArena;
  18. import com.rs.game.minigames.soulwars.SoulWarsManager;
  19. import com.rs.game.npc.NPC;
  20. import com.rs.game.npc.familiar.Familiar;
  21. import com.rs.game.npc.familiar.Familiar.SpecialAttack;
  22. import com.rs.game.npc.instances.Instance;
  23. import com.rs.game.player.CoordsEvent;
  24. import com.rs.game.player.Inventory;
  25. import com.rs.game.player.LogicPacket;
  26. import com.rs.game.player.Player;
  27. import com.rs.game.player.PublicChatMessage;
  28. import com.rs.game.player.QuickChatMessage;
  29. import com.rs.game.player.Skills;
  30. import com.rs.game.player.actions.OrbOnObelisk;
  31. import com.rs.game.player.actions.PlayerCombat;
  32. import com.rs.game.player.actions.PlayerFollow;
  33. import com.rs.game.player.actions.summoning.Summoning;
  34. import com.rs.game.player.content.Shop;
  35. import com.rs.game.player.content.Commands;
  36. import com.rs.game.player.content.FriendChatsManager;
  37. import com.rs.game.player.content.Magic;
  38. import com.rs.game.player.content.SkillCapeCustomizer;
  39. import com.rs.game.player.content.Vote;
  40. import com.rs.game.player.content.WellOfGoodwill;
  41. import com.rs.game.player.content.clans.ClansManager;
  42. import com.rs.game.player.controlers.HouseControler;
  43. import com.rs.io.InputStream;
  44. import com.rs.io.OutputStream;
  45. import com.rs.net.Session;
  46. import com.rs.net.decoders.handlers.ButtonHandler;
  47. import com.rs.net.decoders.handlers.InventoryOptionsHandler;
  48. import com.rs.net.decoders.handlers.NPCHandler;
  49. import com.rs.net.decoders.handlers.ObjectHandler;
  50. import com.rs.utils.DisplayNames;
  51. import com.rs.utils.IPBanL;
  52. import com.rs.utils.IPMute;
  53. import com.rs.utils.Logger;
  54. import com.rs.utils.LoggingSystem;
  55. import com.rs.utils.SerializableFilesManager;
  56. import com.rs.utils.Utils;
  57. import com.rs.utils.huffman.Huffman;
  58. public final class WorldPacketsDecoder extends Decoder {
  59.  
  60.     private static final byte[] PACKET_SIZES = new byte[104];
  61.  
  62.     private final static int WALKING_PACKET = 8;
  63.     private final static int MINI_WALKING_PACKET = 58;
  64.     private final static int AFK_PACKET = -1;
  65.     public final static int ACTION_BUTTON1_PACKET = 14;
  66.     public final static int ACTION_BUTTON2_PACKET = 67;
  67.     public final static int ACTION_BUTTON3_PACKET = 5;
  68.     public final static int ACTION_BUTTON4_PACKET = 55;
  69.     public final static int ACTION_BUTTON5_PACKET = 68;
  70.     public final static int ACTION_BUTTON6_PACKET = 90;
  71.     public final static int ACTION_BUTTON7_PACKET = 6;
  72.     public final static int ACTION_BUTTON8_PACKET = 32;
  73.     public final static int ACTION_BUTTON9_PACKET = 27;
  74.     public final static int WORLD_MAP_CLICK = 38;
  75.     public final static int ACTION_BUTTON10_PACKET = 96;
  76.     public final static int RECEIVE_PACKET_COUNT_PACKET = 33;
  77.     private final static int MAGIC_ON_ITEM_PACKET = 154;//
  78.     private final static int PLAYER_OPTION_4_PACKET = 17;
  79.     private final static int MOVE_CAMERA_PACKET = 103;
  80.     private final static int INTERFACE_ON_OBJECT = 37;
  81.     private final static int CLICK_PACKET = -1;
  82.     private final static int MOUVE_MOUSE_PACKET = -1;
  83.     private final static int KEY_TYPED_PACKET = -1;
  84.     private final static int CLOSE_INTERFACE_PACKET = 54;
  85.     private final static int COMMANDS_PACKET = 60;
  86.     private final static int ITEM_ON_ITEM_PACKET = 3;
  87.     private final static int IN_OUT_SCREEN_PACKET = -1;
  88.     private final static int DONE_LOADING_REGION_PACKET = 30;
  89.     private final static int PING_PACKET = 21;
  90.     private final static int SCREEN_PACKET = 98;
  91.     private final static int CHAT_TYPE_PACKET = 83;
  92.     private final static int CHAT_PACKET = 53;
  93.     private final static int PUBLIC_QUICK_CHAT_PACKET = -1;//86; can be abused to freeze client
  94.     private final static int ADD_FRIEND_PACKET = 89;
  95.     private final static int ADD_IGNORE_PACKET = 4;
  96.     private final static int REMOVE_IGNORE_PACKET = 73;
  97.     private final static int JOIN_FRIEND_CHAT_PACKET = 36;
  98.     private final static int CHANGE_FRIEND_CHAT_PACKET = 22;
  99.     private final static int KICK_FRIEND_CHAT_PACKET = 74;
  100.     private final static int REMOVE_FRIEND_PACKET = 24;
  101.     private final static int SEND_FRIEND_MESSAGE_PACKET = 82;
  102.     private final static int SEND_FRIEND_QUICK_CHAT_PACKET = -1;//0; can be abused to freeze client
  103.     private final static int OBJECT_CLICK1_PACKET = 26;
  104.     private final static int OBJECT_CLICK2_PACKET = 59;
  105.     private final static int OBJECT_CLICK3_PACKET = 40;
  106.     private final static int OBJECT_CLICK4_PACKET = 23;
  107.     private final static int OBJECT_CLICK5_PACKET = 80;
  108.     private final static int OBJECT_EXAMINE_PACKET = 25;
  109.     private final static int NPC_CLICK1_PACKET = 31;
  110.     private final static int NPC_CLICK2_PACKET = 101;
  111.     private final static int NPC_CLICK3_PACKET = 34;
  112.     private final static int NPC_CLICK4_PACKET = 65;
  113.     private final static int ATTACK_NPC = 20;
  114.     private final static int PLAYER_OPTION_1_PACKET = 42;
  115.     private final static int PLAYER_OPTION_2_PACKET = 46;
  116.     private final static int PLAYER_OPTION_5_PACKET = 77;
  117.     private final static int PLAYER_OPTION_6_PACKET = 49;
  118.     private final static int PLAYER_OPTION_7_PACKET = 51;
  119.     private final static int ITEM_TAKE_PACKET = 57;
  120.     private final static int DIALOGUE_CONTINUE_PACKET = 72;
  121.     private final static int ENTER_INTEGER_PACKET = 81;
  122.     private final static int ENTER_NAME_PACKET = 29;
  123.     private final static int ENTER_STRING_PACKET = -1;
  124.     private final static int SWITCH_INTERFACE_ITEM_PACKET = 76;
  125.     private final static int INTERFACE_ON_PLAYER = 50;
  126.     private final static int INTERFACE_ON_NPC = 66;
  127.     private final static int COLOR_ID_PACKET = 97;
  128.     private static final int NPC_EXAMINE_PACKET = 9;
  129.     private final static int REPORT_ABUSE_PACKET = -1;
  130.     private final static int GAME_MESSAGE_INVITATION_PACKET = 56;//clan invite
  131.     private final static int ENTER_LONG_TEXT_PACKET = 48;//clan names and mottos
  132.     private final static int CLAN_FORUM_THREAD_PACKET = 18;
  133.     private final static int GE_SEARCH_PACKET = 71;
  134.     //lobby
  135.     private final static int LOBBY_MAIN_CLICK_PACKET = 91;
  136.     private final static int LOBBY_FRIEND_CHAT_SETTINGS = 79;
  137.     private final static int WORLD_LIST_UPDATE = 87;
  138.  
  139.     static {
  140.         loadPacketSizes();
  141.     }
  142.  
  143.     public static void loadPacketSizes() {
  144.         PACKET_SIZES[0] = -1;
  145.         PACKET_SIZES[1] = -2;
  146.         PACKET_SIZES[2] = -1;
  147.         PACKET_SIZES[3] = 16;
  148.         PACKET_SIZES[4] = -1;
  149.         PACKET_SIZES[5] = 8;
  150.         PACKET_SIZES[6] = 8;
  151.         PACKET_SIZES[7] = 3;
  152.         PACKET_SIZES[8] = -1;
  153.         PACKET_SIZES[9] = 3;
  154.         PACKET_SIZES[10] = -1;
  155.         PACKET_SIZES[11] = -1;
  156.         PACKET_SIZES[12] = -1;
  157.         PACKET_SIZES[13] = 7;
  158.         PACKET_SIZES[14] = 8;
  159.         PACKET_SIZES[15] = 6;
  160.         PACKET_SIZES[16] = 2;
  161.         PACKET_SIZES[17] = 3;
  162.         PACKET_SIZES[18] = -1;
  163.         PACKET_SIZES[19] = -2;
  164.         PACKET_SIZES[20] = 3;
  165.         PACKET_SIZES[21] = 0;
  166.         PACKET_SIZES[22] = -1;
  167.         PACKET_SIZES[23] = 9;
  168.         PACKET_SIZES[24] = -1;
  169.         PACKET_SIZES[25] = 9;
  170.         PACKET_SIZES[26] = 9;
  171.         PACKET_SIZES[27] = 8;
  172.         PACKET_SIZES[28] = 4;
  173.         PACKET_SIZES[29] = -1;
  174.         PACKET_SIZES[30] = 0;
  175.         PACKET_SIZES[31] = 3;
  176.         PACKET_SIZES[32] = 8;
  177.         PACKET_SIZES[33] = 4;
  178.         PACKET_SIZES[34] = 3;
  179.         PACKET_SIZES[35] = -1;
  180.         PACKET_SIZES[36] = -1;
  181.         PACKET_SIZES[37] = 17;
  182.         PACKET_SIZES[38] = 4;
  183.         PACKET_SIZES[39] = 4;
  184.         PACKET_SIZES[40] = 9;
  185.         PACKET_SIZES[41] = -1;
  186.         PACKET_SIZES[42] = 3;
  187.         PACKET_SIZES[43] = 7;
  188.         PACKET_SIZES[44] = -2;
  189.         PACKET_SIZES[45] = 7;
  190.         PACKET_SIZES[46] = 3;
  191.         PACKET_SIZES[47] = 4;
  192.         PACKET_SIZES[48] = -1;
  193.         PACKET_SIZES[49] = 3;
  194.         PACKET_SIZES[50] = 11;
  195.         PACKET_SIZES[51] = 3;
  196.         PACKET_SIZES[52] = -1;
  197.         PACKET_SIZES[53] = -1;
  198.         PACKET_SIZES[54] = 0;
  199.         PACKET_SIZES[55] = 8;
  200.         PACKET_SIZES[56] = 3;
  201.         PACKET_SIZES[57] = 7;
  202.         PACKET_SIZES[58] = -1;
  203.         PACKET_SIZES[59] = 9;
  204.         PACKET_SIZES[60] = -1;
  205.         PACKET_SIZES[61] = 7;
  206.         PACKET_SIZES[62] = 7;
  207.         PACKET_SIZES[63] = 12;
  208.         PACKET_SIZES[64] = 4;
  209.         PACKET_SIZES[65] = 3;
  210.         PACKET_SIZES[66] = 11;
  211.         PACKET_SIZES[67] = 8;
  212.         PACKET_SIZES[68] = 8;
  213.         PACKET_SIZES[69] = 15;
  214.         PACKET_SIZES[70] = 1;
  215.         PACKET_SIZES[71] = 2;
  216.         PACKET_SIZES[72] = 6;
  217.         PACKET_SIZES[73] = -1;
  218.         PACKET_SIZES[74] = -1;
  219.         PACKET_SIZES[75] = -2;
  220.         PACKET_SIZES[76] = 16;
  221.         PACKET_SIZES[77] = 3;
  222.         PACKET_SIZES[78] = 1;
  223.         PACKET_SIZES[79] = 3;
  224.         PACKET_SIZES[80] = 9;
  225.         PACKET_SIZES[81] = 4;
  226.         PACKET_SIZES[82] = -2;
  227.         PACKET_SIZES[83] = 1;
  228.         PACKET_SIZES[84] = 1;
  229.         PACKET_SIZES[85] = 3;
  230.         PACKET_SIZES[86] = -1;
  231.         PACKET_SIZES[87] = 4;
  232.         PACKET_SIZES[88] = 3;
  233.         PACKET_SIZES[89] = -1;
  234.         PACKET_SIZES[90] = 8;
  235.         PACKET_SIZES[91] = -2;
  236.         PACKET_SIZES[92] = -1;
  237.         PACKET_SIZES[93] = -1;
  238.         PACKET_SIZES[94] = 9;
  239.         PACKET_SIZES[95] = -2;
  240.         PACKET_SIZES[96] = 8;
  241.         PACKET_SIZES[97] = 2;
  242.         PACKET_SIZES[98] = 6;
  243.         PACKET_SIZES[99] = 2;
  244.         PACKET_SIZES[100] = -2;
  245.         PACKET_SIZES[101] = 3;
  246.         PACKET_SIZES[102] = 7;
  247.         PACKET_SIZES[103] = 4;
  248.     }
  249.  
  250.     private Player player;
  251.     private int chatType;
  252.  
  253.     public WorldPacketsDecoder(Session session, Player player) {
  254.         super(session);
  255.         this.player = player;
  256.     }
  257.  
  258.     @Override
  259.     public void decode(InputStream stream) {
  260.         while (stream.getRemaining() > 0 && session.getChannel().isConnected()
  261.                 && !player.hasFinished()) {
  262.             int packetId = stream.readPacket(player);
  263.             if (packetId >= PACKET_SIZES.length || packetId < 0) {
  264.                 if (Settings.DEBUG)
  265.                     System.out.println("PacketId " + packetId
  266.                             + " has fake packet id.");
  267.                 break;
  268.             }
  269.             int length = PACKET_SIZES[packetId];
  270.             if (length == -1)
  271.                 length = stream.readUnsignedByte();
  272.             else if (length == -2)
  273.                 length = stream.readUnsignedShort();
  274.             else if (length == -3)
  275.                 length = stream.readInt();
  276.             else if (length == -4) {
  277.                 length = stream.getRemaining();
  278.                 if (Settings.DEBUG)
  279.                     System.out.println("Invalid size for PacketId " + packetId
  280.                             + ". Size guessed to be " + length);
  281.             }
  282.             if (length > stream.getRemaining()) {
  283.                 length = stream.getRemaining();
  284.                 if (Settings.DEBUG)
  285.                     System.out.println("PacketId " + packetId
  286.                             + " has fake size. - expected size " + length);
  287.                 // break;
  288.  
  289.             }
  290.             int startOffset = stream.getOffset();
  291.             processPackets(packetId, stream, length);
  292.             stream.setOffset(startOffset + length);
  293.         }
  294.     }
  295.  
  296.     public static void decodeLogicPacket(final Player player, LogicPacket packet) {
  297.         int packetId = packet.getId();
  298.         InputStream stream = new InputStream(packet.getData());
  299.         if (packetId == WALKING_PACKET || packetId == MINI_WALKING_PACKET) {
  300.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  301.                     || player.isDead())
  302.                 return;
  303.             long currentTime = Utils.currentTimeMillis();
  304.             if (player.getLockDelay() > currentTime)
  305.                 return;
  306.             if (player.getFreezeDelay() >= currentTime) {
  307.                 player.getPackets().sendGameMessage(
  308.                         "A magical force prevents you from moving.");
  309.                 return;
  310.             }
  311.             int length = stream.getLength();
  312.             //if (packetId == MINI_WALKING_PACKET)
  313.             //  length -= 13;
  314.             int baseX = stream.readUnsignedShort128();
  315.             boolean forceRun = stream.readUnsigned128Byte() == 1;
  316.             int baseY = stream.readUnsignedShort128();
  317.             int steps = (length - 5) / 2;
  318.             if (steps > 25)
  319.                 steps = 25;
  320.             player.stopAll();
  321.             if(forceRun)
  322.                 player.setRun(forceRun);
  323.             for (int step = 0; step < steps; step++)
  324.                 if (!player.addWalkSteps(baseX + stream.readUnsignedByte(),
  325.                         baseY + stream.readUnsignedByte(), 25,
  326.                         true))
  327.                     break;
  328.             /**
  329.              * New, not fucking retarded routing system below
  330.              */
  331.             /*final int baseX = stream.readUnsignedShort128();
  332.             final boolean forceRun = stream.readUnsigned128Byte() == 1;
  333.             final int baseY = stream.readUnsignedShort128();
  334.             final int xOffset = stream.readUnsignedByte();
  335.             final int yOffset = stream.readUnsignedByte();
  336.             final int real_x_coord = baseX + xOffset;
  337.             final int real_y_coord = baseY + yOffset;
  338.             if (real_y_coord == player.getY() && real_x_coord == player.getX())
  339.                 return;
  340.             if (forceRun)
  341.                 player.setRun(forceRun);
  342.             final WorldTile tile = new WorldTile(real_x_coord, real_y_coord, player.getPlane());
  343.             if (tile != null) {
  344.                 player.stopAll();
  345.                 player.setRouteEvent(new RouteEvent(tile, new Runnable() {
  346.                     @Override
  347.                     public void run() {
  348.                     }
  349.                 }));
  350.             }*/
  351.         } else if (packetId == INTERFACE_ON_OBJECT) {
  352.             boolean forceRun = stream.readByte128() == 1;
  353.             int itemId = stream.readShortLE128();
  354.             int y = stream.readShortLE128();
  355.             int objectId = stream.readIntV2();
  356.             int interfaceHash = stream.readInt();
  357.             final int interfaceId = interfaceHash >> 16;
  358.             final int componentId = interfaceHash - (interfaceId << 16);
  359.             int slot = stream.readShortLE();
  360.             int x = stream.readShort128();
  361.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  362.                     || player.isDead())
  363.                 return;
  364.             long currentTime = Utils.currentTimeMillis();
  365.             if (player.getLockDelay() >= currentTime || player.getEmotesManager().getNextEmoteEnd() >= currentTime)
  366.                 return;
  367.             final WorldTile tile = new WorldTile(x, y, player.getPlane());
  368.             int regionId = tile.getRegionId();
  369.             if (!player.getMapRegionsIds().contains(regionId))
  370.                 return;
  371.             WorldObject mapObject = World.getRegion(regionId).getObject(objectId, tile);
  372.             if (mapObject == null || mapObject.getId() != objectId)
  373.                 return;
  374.             final WorldObject object = !player.isAtDynamicRegion() ? mapObject : new WorldObject(objectId, mapObject.getType(), mapObject.getRotation(), x, y, player.getPlane());
  375.             final Item item = player.getInventory().getItem(slot);
  376.             if (player.isDead() || Utils.getInterfaceDefinitionsSize() <= interfaceId)
  377.                 return;
  378.             if (player.getLockDelay() > Utils.currentTimeMillis())
  379.                 return;
  380.             if (!player.getInterfaceManager().containsInterface(interfaceId))
  381.                 return;
  382.             player.stopAll(false); // false
  383.             if(forceRun)
  384.                 player.setRun(forceRun);
  385.             switch (interfaceId) {
  386.             case Inventory.INVENTORY_INTERFACE: // inventory
  387.                 if (item == null || item.getId() != itemId)
  388.                     return;
  389.                 ObjectHandler.handleItemOnObject(player, object, interfaceId, item);
  390.                 break;
  391.             case 430://lunar interface
  392.                 Magic.processLunarSpell(player, componentId, object);
  393.                 break;
  394.             case 192://reg magic inter
  395.                 switch (componentId) {
  396.                 case 60://WATER
  397.                 case 64://earth
  398.                 case 71://fire
  399.                 case 74://air
  400.                     if (object.getDefinitions().name.toLowerCase().contains("obelisk of")) {
  401.                         player.faceObject(object);
  402.                         OrbOnObelisk.handleMagicOnObject(player, componentId, object);
  403.                     }
  404.                     break;
  405.                 }
  406.                 break;
  407.             }
  408.         } else if (packetId == PLAYER_OPTION_6_PACKET) {            @SuppressWarnings("unused")
  409.             boolean unknown = stream.readByte() == 1;
  410.             int playerIndex = stream.readUnsignedShortLE128();
  411.             Player other = World.getPlayers().get(playerIndex);
  412.             if (other == null || other.isDead() || other.hasFinished()
  413.                     || !player.getMapRegionsIds().contains(other.getRegionId()))
  414.                 return;
  415.             if (player.getLockDelay() > Utils.currentTimeMillis())
  416.                 return;
  417.             if (player.getInterfaceManager().containsScreenInter()) {
  418.                 player.getPackets()
  419.                         .sendGameMessage("The other player is busy.");
  420.                 return;
  421.             }
  422.             if (!other.withinDistance(player, 14)) {
  423.                 player.getPackets().sendGameMessage(
  424.                         "Unable to find target " + other.getDisplayName());
  425.                 return;
  426.             }
  427.             if (player.getAttackedByDelay() + 10000 > Utils.currentTimeMillis()) {
  428.                 player.getPackets()
  429.                         .sendGameMessage(
  430.                                 "<col=B00000>You can't view "
  431.                                         + other.getDisplayName()
  432.                                         + " Stats's until 10 seconds after the end of combat.");
  433.                 return;
  434.             }
  435.             player.getInterfaceManager().sendInterface(1314);
  436.             player.getPackets().sendIComponentText(1314, 91,
  437.                     "" + other.getDisplayName() + "'s stats");
  438.             player.getPackets().sendIComponentText(1314, 30, "Prestige:");
  439.             String mode = other.isEasy() ? "Easy" : other.isHard() ? "Hard" : other.isInsane() ? "Insane" : "Medium";
  440.             String mode1 = other.isUltimate() ? "Ultimate" : other.isIronman() ? "Ironman" : "Regular";
  441.             player.getPackets().sendIComponentText(1314, 90, mode1+", "+mode+".");
  442.             player.getPackets().sendIComponentText(1314, 60, ""+other.prestigeNumber);
  443.             player.getPackets().sendIComponentText(1314, 61,
  444.                     "" + other.getSkills().getLevel(0));
  445.             player.getPackets().sendIComponentText(1314, 62,
  446.                     "" + other.getSkills().getLevel(2));
  447.             player.getPackets().sendIComponentText(1314, 63,
  448.                     "" + other.getSkills().getLevel(1));
  449.             player.getPackets().sendIComponentText(1314, 65,
  450.                     "" + other.getSkills().getLevel(4));
  451.             player.getPackets().sendIComponentText(1314, 66,
  452.                     "" + other.getSkills().getLevel(5));
  453.             player.getPackets().sendIComponentText(1314, 64,
  454.                     "" + other.getSkills().getLevel(6));
  455.             player.getPackets().sendIComponentText(1314, 78,
  456.                     "" + other.getSkills().getLevel(20));
  457.             player.getPackets().sendIComponentText(1314, 81,
  458.                     "" + other.getSkills().getLevel(22));
  459.             player.getPackets().sendIComponentText(1314, 76,
  460.                     "" + other.getSkills().getLevel(24));
  461.             player.getPackets().sendIComponentText(1314, 82,
  462.                     "" + other.getSkills().getLevel(3));
  463.             player.getPackets().sendIComponentText(1314, 83,
  464.                     "" + other.getSkills().getLevel(16));
  465.             player.getPackets().sendIComponentText(1314, 84,
  466.                     "" + other.getSkills().getLevel(15));
  467.             player.getPackets().sendIComponentText(1314, 80,
  468.                     "" + other.getSkills().getLevel(17));
  469.             player.getPackets().sendIComponentText(1314, 70,
  470.                     "" + other.getSkills().getLevel(12));
  471.             player.getPackets().sendIComponentText(1314, 85,
  472.                     "" + other.getSkills().getLevel(9));
  473.             player.getPackets().sendIComponentText(1314, 77,
  474.                     "" + other.getSkills().getLevel(18));
  475.             player.getPackets().sendIComponentText(1314, 79,
  476.                     "" + other.getSkills().getLevel(21));
  477.             player.getPackets().sendIComponentText(1314, 68,
  478.                     "" + other.getSkills().getLevel(14));
  479.             player.getPackets().sendIComponentText(1314, 69,
  480.                     "" + other.getSkills().getLevel(13));
  481.             player.getPackets().sendIComponentText(1314, 74,
  482.                     "" + other.getSkills().getLevel(10));
  483.             player.getPackets().sendIComponentText(1314, 75,
  484.                     "" + other.getSkills().getLevel(7));
  485.             player.getPackets().sendIComponentText(1314, 73,
  486.                     "" + other.getSkills().getLevel(11));
  487.             player.getPackets().sendIComponentText(1314, 71,
  488.                     "" + other.getSkills().getLevel(8));
  489.             player.getPackets().sendIComponentText(1314, 72,
  490.                     "" + other.getSkills().getLevel(19));
  491.             player.getPackets().sendIComponentText(1314, 67,
  492.                     "" + other.getSkills().getLevel(23));
  493.             player.getPackets().sendIComponentText(1314, 87,
  494.                     "" + other.getMaxHitpoints());
  495.             player.getPackets().sendIComponentText(1314, 86,
  496.                     "" + other.getSkills().getCombatLevelWithSummoning());
  497.             player.getPackets().sendIComponentText(1314, 88,
  498.                     "" + other.getSkills().getTotalLevel(other));
  499.             player.getPackets().sendIComponentText(1314, 89,
  500.                     "" + other.getSkills().getTotalXp(other));
  501.             player.getTemporaryAttributes().put("finding_player",
  502.                     Boolean.FALSE);                
  503.         } else if (packetId == GAME_MESSAGE_INVITATION_PACKET) {
  504.             boolean forceRun = stream.readUnsignedByte() == 1;
  505.             int playerIndex = stream.readUnsignedShortLE128();
  506.             Player p2 = World.getPlayers().get(playerIndex);
  507.             if (p2 == null || p2 == player || p2.isDead() || p2.hasFinished() || !player.getMapRegionsIds().contains(p2.getRegionId()))
  508.             return;
  509.             if (player.isLocked())
  510.             return;
  511.             if (forceRun)
  512.             player.setRun(forceRun);
  513.             player.stopAll();
  514.             ClansManager.viewInvite(player, p2);
  515.         } else if (packetId == PLAYER_OPTION_2_PACKET) {
  516.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  517.                     || player.isDead())
  518.                 return;
  519.             @SuppressWarnings("unused")
  520.             boolean unknown = stream.readByte() == 1;
  521.             int playerIndex = stream.readUnsignedShortLE128();
  522.             Player p2 = World.getPlayers().get(playerIndex);
  523.             if (p2 == null || p2.isDead() || p2.hasFinished()
  524.                     || !player.getMapRegionsIds().contains(p2.getRegionId()))
  525.                 return;
  526.             if (player.getLockDelay() > Utils.currentTimeMillis())
  527.                 return;
  528.             player.stopAll(false);
  529.             player.getActionManager().setAction(new PlayerFollow(p2));
  530.         } else if (packetId == PLAYER_OPTION_5_PACKET) {//Rubber Chicken
  531.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  532.                     || player.isDead())
  533.                 return;
  534.             @SuppressWarnings("unused")
  535.             boolean unknown = stream.readByte() == 1;
  536.             int playerIndex = stream.readUnsignedShortLE128();
  537.             Player p2 = World.getPlayers().get(playerIndex);
  538.             if (p2 == null || p2.isDead() || p2.hasFinished()
  539.                     || !player.getMapRegionsIds().contains(p2.getRegionId()))
  540.                 return;
  541.             player.faceEntity(p2);
  542.             player.setNextAnimation(new Animation(1833));
  543.  
  544.         } else if (packetId == PLAYER_OPTION_7_PACKET) {
  545.              @SuppressWarnings("unused")
  546.                 boolean unknown = stream.readByte() == 1;
  547.                 int playerIndex = stream.readUnsignedShortLE128();
  548.                 Player other = World.getPlayers().get(playerIndex);
  549.                 if (other == null || other.isDead() || other.hasFinished()
  550.                         || !player.getMapRegionsIds().contains(other.getRegionId()))
  551.                     return;
  552.                 if (player.getLockDelay() > Utils.currentTimeMillis())
  553.                     return;
  554.                 if (!other.withinDistance(player, 14)) {
  555.                     player.getPackets().sendGameMessage(
  556.                             "Unable to find target "+other.getDisplayName());
  557.                     return;
  558.                 }
  559.                 if (player.getRights() < 1 || player.getRights() > 4) {
  560.                     player.getPackets().sendGameMessage("You have insufficient privelages to use the Mod Panel.");
  561.                     return;
  562.                 }
  563.                 player.getDialogueManager().startDialogue("ModPanel", playerIndex);
  564.             return;
  565.     } else if (packetId == PLAYER_OPTION_4_PACKET) {
  566.             @SuppressWarnings("unused")
  567.             boolean unknown = stream.readByte() == 1;
  568.             int playerIndex = stream.readUnsignedShortLE128();
  569.             Player p2 = World.getPlayers().get(playerIndex);
  570.             if (p2 == null || p2.isDead() || p2.hasFinished()
  571.                     || !player.getMapRegionsIds().contains(p2.getRegionId()))
  572.                 return;
  573.             if (player.getLockDelay() > Utils.currentTimeMillis())
  574.                 return;
  575.             player.stopAll(false);
  576.             if(player.isCantTrade()) {
  577.                 player.getPackets().sendGameMessage("You are busy.");
  578.                 return;
  579.             }
  580.             if (player.isTradeLocked() || p2.isTradeLocked()) {
  581.                 player.getPackets().sendGameMessage("<col=FF0000>Trade request has been denied.");
  582.             return;
  583.             }
  584.             if (p2.getRights() == 3 && !p2.isAdminCanTrade()) {
  585.                 player.sm("The other player is busy.");
  586.                 return;
  587.             }
  588.             if (player.getRights() >= 2
  589.                     && !player.isAdminCanTrade() && !player.isOwner()
  590.                     || p2.getRights() >= 2 && !p2.isAdminCanTrade() && !p2.isOwner()) {
  591.             player.getPackets().sendGameMessage("Administrators cannot trade.");
  592.             return;
  593.             }
  594.                 if (player.isIronman() || p2.isIronman()) {
  595.                 player.getPackets().sendGameMessage("Ironman accounts are not able to trade other players.");
  596.                 return;
  597.             }
  598.             if (p2.getInterfaceManager().containsScreenInter() || p2.isCantTrade()) { //|| player.getControlerManager().getControler() instanceof DuelArena || player.getControlerManager().getControler() instanceof DuelControler) {
  599.                 player.getPackets().sendGameMessage("The other player is busy.");
  600.                 return;
  601.             }
  602.             if (!p2.withinDistance(player, 14)) {
  603.                 player.getPackets().sendGameMessage(
  604.                         "Unable to find target "+p2.getDisplayName());
  605.                 return;
  606.             }
  607.             if (p2.getTemporaryAttributes().get("TradeTarget") == player) {
  608.                 p2.getTemporaryAttributes().remove("TradeTarget");
  609.                 player.getTrade().openTrade(p2);
  610.                 p2.getTrade().openTrade(player);
  611.                 return;
  612.             }
  613.             player.getTemporaryAttributes().put("TradeTarget", p2);
  614.             player.getPackets().sendGameMessage("Sending " + p2.getDisplayName() + " a request...");
  615.             p2.getPackets().sendTradeRequestMessage(player);
  616.         } else if (packetId == PLAYER_OPTION_1_PACKET) {
  617.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  618.                     || player.isDead())
  619.                 return;
  620.             @SuppressWarnings("unused")
  621.             boolean unknown = stream.readByte() == 1;
  622.             int playerIndex = stream.readUnsignedShortLE128();
  623.             Player p2 = World.getPlayers().get(playerIndex);
  624.             if (p2 == null || p2.isDead() || p2.hasFinished()
  625.                     || !player.getMapRegionsIds().contains(p2.getRegionId()))
  626.                 return;
  627.             if (player.getLockDelay() > Utils.currentTimeMillis()
  628.                     || !player.getControlerManager().canPlayerOption1(p2))
  629.                 return;
  630.             if (!player.isCanPvp())
  631.                 return;
  632.             if (!player.getControlerManager().canAttack(p2))
  633.                 return;
  634.  
  635.             if (!player.isCanPvp() || !p2.isCanPvp()) {
  636.                 player.getPackets()
  637.                 .sendGameMessage(
  638.                         "You can only attack players in a player-vs-player area.");
  639.                 return;
  640.             }
  641.             if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
  642.                 if (player.getAttackedBy() != p2
  643.                         && player.getAttackedByDelay() > Utils
  644.                         .currentTimeMillis()) {
  645.                     player.getPackets().sendGameMessage(
  646.                             "You are already in combat.");
  647.                     return;
  648.                 }
  649.                 if (p2.getAttackedBy() != player
  650.                         && p2.getAttackedByDelay() > Utils.currentTimeMillis()) {
  651.                     if (p2.getAttackedBy() instanceof NPC) {
  652.                         p2.setAttackedBy(player); // changes enemy to player,
  653.                         // player has priority over
  654.                         // npc on single areas
  655.                     } else {
  656.                         player.getPackets().sendGameMessage(
  657.                                 "That player is already in combat.");
  658.                         return;
  659.                     }
  660.                 }
  661.             }
  662.             player.stopAll(false);
  663.             player.getActionManager().setAction(new PlayerCombat(p2));
  664.         } else if (packetId == ATTACK_NPC) {
  665.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  666.                     || player.isDead()) {
  667.                 return;
  668.             }
  669.             if (player.getLockDelay() > Utils.currentTimeMillis()) {
  670.                 return;
  671.             }
  672.             int npcIndex = stream.readUnsignedShort128();
  673.             boolean forceRun = stream.read128Byte() == 1;
  674.             if(forceRun)
  675.                 player.setRun(forceRun);
  676.             NPC npc = World.getNPCs().get(npcIndex);
  677.             if (npc == null || npc.isDead() || npc.hasFinished()
  678.                     || !player.getMapRegionsIds().contains(npc.getRegionId())
  679.                     || !npc.getDefinitions().hasAttackOption()) {
  680.                 return;
  681.             }
  682.             if (!player.getControlerManager().canAttack(npc)) {
  683.                 return;
  684.             }
  685.             if (npc instanceof Familiar) {
  686.                 Familiar familiar = (Familiar) npc;
  687.                 if (familiar == player.getFamiliar()) {
  688.                     player.getPackets().sendGameMessage(
  689.                             "You can't attack your own familiar.");
  690.                     return;
  691.                 }
  692.                 if (!familiar.canAttack(player)) {
  693.                     player.getPackets().sendGameMessage(
  694.                             "You can't attack this npc.");
  695.                     return;
  696.                 }
  697.             } else if (!npc.isForceMultiAttacked()) {
  698.                 if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
  699.                     if (player.getAttackedBy() != npc
  700.                             && player.getAttackedByDelay() > Utils
  701.                             .currentTimeMillis()) {
  702.                         player.getPackets().sendGameMessage(
  703.                                 "You are already in combat.");
  704.                         return;
  705.                     }
  706.                     if (npc.getAttackedBy() != player
  707.                             && npc.getAttackedByDelay() > Utils
  708.                             .currentTimeMillis()) {
  709.                         player.getPackets().sendGameMessage(
  710.                                 "This npc is already in combat.");
  711.                         return;
  712.                     }
  713.                 }
  714.             }
  715.             player.stopAll(false);
  716.             player.getActionManager().setAction(new PlayerCombat(npc));
  717.         } else if (packetId == INTERFACE_ON_PLAYER) {
  718.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  719.                     || player.isDead())
  720.                 return;
  721.             if (player.getLockDelay() > Utils.currentTimeMillis())
  722.                 return;
  723.             int junk1 = stream.readUnsignedShort();
  724.             int playerIndex = stream.readUnsignedShort();
  725.             int interfaceHash = stream.readIntV2();
  726.             @SuppressWarnings("unused")
  727.             int junk2 = stream.readUnsignedShortLE128();
  728.             @SuppressWarnings("unused")
  729.             boolean unknown = stream.read128Byte() == 1;
  730.             int interfaceId = interfaceHash >> 16;
  731.             int componentId = interfaceHash - (interfaceId << 16);
  732.             if (Utils.getInterfaceDefinitionsSize() <= interfaceId)
  733.                 return;
  734.             if (!player.getInterfaceManager().containsInterface(interfaceId))
  735.                 return;
  736.             if (componentId == 65535)
  737.                 componentId = -1;
  738.             if (componentId != -1
  739.                     && Utils.getInterfaceDefinitionsComponentsSize(interfaceId) <= componentId)
  740.                 return;
  741.             Player p2 = World.getPlayers().get(playerIndex);
  742.             if (p2 == null || p2.isDead() || p2.hasFinished()
  743.                     || !player.getMapRegionsIds().contains(p2.getRegionId()))
  744.                 return;
  745.             player.stopAll(false);
  746.             switch (interfaceId) {
  747.             case 1110:
  748.                 if (componentId == 87)
  749.                     ClansManager.invite(player, p2);
  750.                 break;
  751.             case Inventory.INVENTORY_INTERFACE:// Item on player
  752.                 //if (!player.getControlerManager().processItemOnPlayer(p2, junk1))
  753.                 //  return;
  754.                 InventoryOptionsHandler.handleItemOnPlayer(player, p2, junk1);
  755.                 break;
  756.             case 662:
  757.             case 747:
  758.                 if (player.getFamiliar() == null)
  759.                     return;
  760.                 player.resetWalkSteps();
  761.                 if ((interfaceId == 747 && componentId == 15)
  762.                         || (interfaceId == 662 && componentId == 65)
  763.                         || (interfaceId == 662 && componentId == 74)
  764.                         || interfaceId == 747 && componentId == 18) {
  765.                     if ((interfaceId == 662 && componentId == 74
  766.                             || interfaceId == 747 && componentId == 24 || interfaceId == 747
  767.                             && componentId == 18)) {
  768.                         if (player.getFamiliar().getSpecialAttack() != SpecialAttack.ENTITY)
  769.                             return;
  770.                     }
  771.                     if (!player.isCanPvp() || !p2.isCanPvp()) {
  772.                         player.getPackets()
  773.                         .sendGameMessage(
  774.                                 "You can only attack players in a player-vs-player area.");
  775.                         return;
  776.                     }
  777.                     if (!player.getFamiliar().canAttack(p2)) {
  778.                         player.getPackets()
  779.                         .sendGameMessage(
  780.                                 "You can only use your familiar in a multi-zone area.");
  781.                         return;
  782.                     } else {
  783.                         player.getFamiliar().setSpecial(
  784.                                 interfaceId == 662 && componentId == 74
  785.                                 || interfaceId == 747
  786.                                 && componentId == 18);
  787.                         player.getFamiliar().setTarget(p2);
  788.                     }
  789.                 }
  790.                 break;
  791.             case 193:
  792.                 switch (componentId) {
  793.                 case 28:
  794.                 case 32:
  795.                 case 24:
  796.                 case 20:
  797.                 case 30:
  798.                 case 34:
  799.                 case 26:
  800.                 case 22:
  801.                 case 29:
  802.                 case 33:
  803.                 case 25:
  804.                 case 21:
  805.                 case 31:
  806.                 case 35:
  807.                 case 27:
  808.                 case 23:
  809.                     if (Magic.checkCombatSpell(player, componentId, 1, false)) {
  810.                         player.setNextFaceWorldTile(new WorldTile(p2
  811.                                 .getCoordFaceX(p2.getSize()), p2
  812.                                 .getCoordFaceY(p2.getSize()), p2.getPlane()));
  813.                         if (!player.getControlerManager().canAttack(p2))
  814.                             return;
  815.                         if (!player.isCanPvp() || !p2.isCanPvp()) {
  816.                             player.getPackets()
  817.                             .sendGameMessage(
  818.                                     "You can only attack players in a player-vs-player area.");
  819.                             return;
  820.                         }
  821.                         if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
  822.                             if (player.getAttackedBy() != p2
  823.                                     && player.getAttackedByDelay() > Utils
  824.                                     .currentTimeMillis()) {
  825.                                 player.getPackets()
  826.                                 .sendGameMessage(
  827.                                         "That "
  828.                                                 + (player
  829.                                                         .getAttackedBy() instanceof Player ? "player"
  830.                                                                 : "npc")
  831.                                                                 + " is already in combat.");
  832.                                 return;
  833.                             }
  834.                             if (p2.getAttackedBy() != player
  835.                                     && p2.getAttackedByDelay() > Utils
  836.                                     .currentTimeMillis()) {
  837.                                 if (p2.getAttackedBy() instanceof NPC) {
  838.                                     p2.setAttackedBy(player); // changes enemy
  839.                                     // to player,
  840.                                     // player has
  841.                                     // priority over
  842.                                     // npc on single
  843.                                     // areas
  844.                                 } else {
  845.                                     player.getPackets()
  846.                                     .sendGameMessage(
  847.                                             "That player is already in combat.");
  848.                                     return;
  849.                                 }
  850.                             }
  851.                         }
  852.                         player.getActionManager()
  853.                         .setAction(new PlayerCombat(p2));
  854.                     }
  855.                     break;
  856.                 }
  857.             case 192:
  858.                 switch (componentId) {
  859.                 case 25: // air strike
  860.                 case 28: // water strike
  861.                 case 30: // earth strike
  862.                 case 32: // fire strike
  863.                 case 34: // air bolt
  864.                 case 39: // water bolt
  865.                 case 42: // earth bolt
  866.                 case 45: // fire bolt
  867.                 case 49: // air blast
  868.                 case 52: // water blast
  869.                 case 56: //magic dart
  870.                 case 58: // earth blast
  871.                 case 63: // fire blast
  872.                 case 70: // air wave
  873.                 case 73: // water wave
  874.                 case 77: // earth wave
  875.                 case 80: // fire wave
  876.                 case 86: // teleblock
  877.                 case 84: // air surge
  878.                 case 87: // water surge
  879.                 case 89: // earth surge
  880.                 case 91: // fire surge
  881.                 case 99: // storm of armadyl
  882.                 case 36: // bind
  883.                 case 66: // Sara Strike
  884.                 case 67: // Guthix Claws
  885.                 case 68: // Flame of Zammy
  886.                 case 55: // snare
  887.                 case 81: // entangle
  888.                     if (Magic.checkCombatSpell(player, componentId, 1, false)) {
  889.                         player.setNextFaceWorldTile(new WorldTile(p2
  890.                                 .getCoordFaceX(p2.getSize()), p2
  891.                                 .getCoordFaceY(p2.getSize()), p2.getPlane()));
  892.                         if (!player.getControlerManager().canAttack(p2))
  893.                             return;
  894.                         if (!player.isCanPvp() || !p2.isCanPvp()) {
  895.                             player.getPackets()
  896.                             .sendGameMessage(
  897.                                     "You can only attack players in a player-vs-player area.");
  898.                             return;
  899.                         }
  900.                         if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
  901.                             if (player.getAttackedBy() != p2
  902.                                     && player.getAttackedByDelay() > Utils
  903.                                     .currentTimeMillis()) {
  904.                                 player.getPackets()
  905.                                 .sendGameMessage(
  906.                                         "That "
  907.                                                 + (player
  908.                                                         .getAttackedBy() instanceof Player ? "player"
  909.                                                                 : "npc")
  910.                                                                 + " is already in combat.");
  911.                                 return;
  912.                             }
  913.                             if (p2.getAttackedBy() != player
  914.                                     && p2.getAttackedByDelay() > Utils
  915.                                     .currentTimeMillis()) {
  916.                                 if (p2.getAttackedBy() instanceof NPC) {
  917.                                     p2.setAttackedBy(player); // changes enemy
  918.                                     // to player,
  919.                                     // player has
  920.                                     // priority over
  921.                                     // npc on single
  922.                                     // areas
  923.                                 } else {
  924.                                     player.getPackets()
  925.                                     .sendGameMessage(
  926.                                             "That player is already in combat.");
  927.                                     return;
  928.                                 }
  929.                             }
  930.                         }
  931.                         player.getActionManager()
  932.                         .setAction(new PlayerCombat(p2));
  933.                     }
  934.                     break;
  935.                 }
  936.                 break;
  937.                 case 430:
  938.                     Magic.processLunarSpell(player, componentId, p2);
  939.                 break;
  940.             }
  941.             if (Settings.DEBUG)
  942.                 System.out.println("Spell:" + componentId);
  943.         } else if (packetId == ENTER_LONG_TEXT_PACKET) {
  944.             String value = stream.readString();
  945.             if (value.equals(""))
  946.                 return;
  947.             if (player.getInterfaceManager().containsInterface(1103))
  948.                 ClansManager.setClanMottoInterface(player, value);
  949.             else if (player.getInterfaceManager().containsInterface(1094)) {
  950.                  if (Utils.invalidClanString(value))
  951.                         return;
  952.                 ClansManager.createClan(player, value);
  953.             }
  954.         } else if (packetId == CLAN_FORUM_THREAD_PACKET) {
  955.             String value = stream.readString();
  956.             if (value.equals(""))
  957.                 return;
  958.             if (player.getInterfaceManager().containsInterface(1100))
  959.                 ClansManager.setThreadIdInterface(player, value);
  960.         } else if (packetId == INTERFACE_ON_NPC) {
  961.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  962.                     || player.isDead())
  963.                 return;
  964.             if (player.getLockDelay() > Utils.currentTimeMillis())
  965.                 return;
  966.             @SuppressWarnings("unused")
  967.             boolean unknown = stream.readByte() == 1;
  968.             int interfaceHash = stream.readInt();
  969.             int npcIndex = stream.readUnsignedShortLE();
  970.             int interfaceSlot = stream.readUnsignedShortLE128();
  971.             @SuppressWarnings("unused")
  972.             int junk2 =stream.readUnsignedShortLE();
  973.             int interfaceId = interfaceHash >> 16;
  974.             int componentId = interfaceHash - (interfaceId << 16);
  975.             if (Utils.getInterfaceDefinitionsSize() <= interfaceId)
  976.                 return;
  977.             if (!player.getInterfaceManager().containsInterface(interfaceId))
  978.                 return;
  979.             if (componentId == 65535)
  980.                 componentId = -1;
  981.             if (componentId != -1
  982.                     && Utils.getInterfaceDefinitionsComponentsSize(interfaceId) <= componentId)
  983.                 return;
  984.             NPC npc = World.getNPCs().get(npcIndex);
  985.             if (npc == null || npc.isDead() || npc.hasFinished()
  986.                     || !player.getMapRegionsIds().contains(npc.getRegionId()))
  987.                 return;
  988.             player.stopAll(false);
  989.             if (interfaceId != Inventory.INVENTORY_INTERFACE) {
  990.                 if (!npc.getDefinitions().hasAttackOption()) {
  991.                     player.getPackets().sendGameMessage(
  992.                             "You can't attack this npc.");
  993.                     return;
  994.                 }
  995.             }
  996.             switch (interfaceId) {
  997.             case Inventory.INVENTORY_INTERFACE:
  998.                 Item item = player.getInventory().getItem(interfaceSlot);
  999.                 if (item == null || !player.getControlerManager().processItemOnNPC(npc, item))
  1000.                     return;
  1001.                 InventoryOptionsHandler.handleItemOnNPC(player, npc, item);
  1002.                 /*@SuppressWarnings("unused")
  1003.                 //boolean unknown = stream.readByte() == 1;
  1004.                 int playerIndex = stream.readUnsignedShortLE128();
  1005.                 Player p2 = World.getPlayers().get(playerIndex);
  1006.                 if (item == null || !player.getControlerManager().processItemOnPlayer(player, item))
  1007.                     return;
  1008.                 InventoryOptionsHandler.handleItemOnPlayer(player, npc, item);*/
  1009.                 break;
  1010.             case 430://lunars
  1011.                 Magic.processLunarOnNpc(player, componentId, npc);
  1012.                 break; 
  1013.             case 1165:
  1014.                 Summoning.attackDreadnipTarget(npc, player);
  1015.                 break;
  1016.             case 662:
  1017.             case 747:
  1018.                 if (player.getFamiliar() == null)
  1019.                     return;
  1020.                 player.resetWalkSteps();
  1021.                 if ((interfaceId == 747 && componentId == 15)
  1022.                         || (interfaceId == 662 && componentId == 65)
  1023.                         || (interfaceId == 662 && componentId == 74)
  1024.                         || interfaceId == 747 && componentId == 18
  1025.                         || interfaceId == 747 && componentId == 24) {
  1026.                     if ((interfaceId == 662 && componentId == 74 || interfaceId == 747
  1027.                             && componentId == 18)) {
  1028.                         if (player.getFamiliar().getSpecialAttack() != SpecialAttack.ENTITY)
  1029.                             return;
  1030.                     }
  1031.                     if(npc instanceof Familiar) {
  1032.                         Familiar familiar = (Familiar) npc;
  1033.                         if (familiar == player.getFamiliar()) {
  1034.                             player.getPackets().sendGameMessage("You can't attack your own familiar.");
  1035.                             return;
  1036.                         }
  1037.                         if (!player.getFamiliar().canAttack(familiar.getOwner())) {
  1038.                             player.getPackets().sendGameMessage("You can only attack players in a player-vs-player area.");
  1039.                             return;
  1040.                         }
  1041.                     }
  1042.                     if (!player.getFamiliar().canAttack(npc)) {
  1043.                         player.getPackets()
  1044.                         .sendGameMessage(
  1045.                                 "You can only use your familiar in a multi-zone area.");
  1046.                         return;
  1047.                     } else {
  1048.                         player.getFamiliar().setSpecial(
  1049.                                 interfaceId == 662 && componentId == 74
  1050.                                 || interfaceId == 747
  1051.                                 && componentId == 18);
  1052.                         player.getFamiliar().setTarget(npc);
  1053.                     }
  1054.                 }
  1055.                 break;
  1056.             case 193:
  1057.                 switch (componentId) {
  1058.                 case 28:
  1059.                 case 32:
  1060.                 case 24:
  1061.                 case 20:
  1062.                 case 30:
  1063.                 case 34:
  1064.                 case 26:
  1065.                 case 22:
  1066.                 case 29:
  1067.                 case 33:
  1068.                 case 25:
  1069.                 case 21:
  1070.                 case 31:
  1071.                 case 35:
  1072.                 case 27:
  1073.                 case 23:
  1074.                     if (Magic.checkCombatSpell(player, componentId, 1, false)) {
  1075.                         player.setNextFaceWorldTile(new WorldTile(npc
  1076.                                 .getCoordFaceX(npc.getSize()), npc
  1077.                                 .getCoordFaceY(npc.getSize()), npc.getPlane()));
  1078.                         if (!player.getControlerManager().canAttack(npc))
  1079.                             return;
  1080.                         if (npc instanceof Familiar) {
  1081.                             Familiar familiar = (Familiar) npc;
  1082.                             if (familiar == player.getFamiliar()) {
  1083.                                 player.getPackets().sendGameMessage(
  1084.                                         "You can't attack your own familiar.");
  1085.                                 return;
  1086.                             }
  1087.                             if (!familiar.canAttack(player)) {
  1088.                                 player.getPackets().sendGameMessage(
  1089.                                         "You can't attack this npc.");
  1090.                                 return;
  1091.                             }
  1092.                         } else if (!npc.isForceMultiAttacked()) {
  1093.                             if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
  1094.                                 if (player.getAttackedBy() != npc
  1095.                                         && player.getAttackedByDelay() > Utils
  1096.                                         .currentTimeMillis()) {
  1097.                                     player.getPackets().sendGameMessage(
  1098.                                             "You are already in combat.");
  1099.                                     return;
  1100.                                 }
  1101.                                 if (npc.getAttackedBy() != player
  1102.                                         && npc.getAttackedByDelay() > Utils
  1103.                                         .currentTimeMillis()) {
  1104.                                     player.getPackets().sendGameMessage(
  1105.                                             "This npc is already in combat.");
  1106.                                     return;
  1107.                                 }
  1108.                             }
  1109.                         }
  1110.                         player.getActionManager().setAction(
  1111.                                 new PlayerCombat(npc));
  1112.                     }
  1113.                     break;
  1114.                 }
  1115.             case 192:
  1116.                 switch (componentId) {
  1117.                 case 25: // air strike
  1118.                 case 28: // water strike
  1119.                 case 30: // earth strike
  1120.                 case 32: // fire strike
  1121.                 case 34: // air bolt
  1122.                 case 39: // water bolt
  1123.                 case 42: // earth bolt
  1124.                 case 45: // fire bolt
  1125.                 case 49: // air blast
  1126.                 case 52: // water blast
  1127.                 case 56://magic dart
  1128.                 case 58: // earth blast
  1129.                 case 63: // fire blast
  1130.                 case 70: // air wave
  1131.                 case 73: // water wave
  1132.                 case 77: // earth wave
  1133.                 case 80: // fire wave
  1134.                 case 84: // air surge
  1135.                 case 87: // water surge
  1136.                 case 89: // earth surge
  1137.                 case 66: // Sara Strike
  1138.                 case 67: // Guthix Claws
  1139.                 case 68: // Flame of Zammy
  1140.                 case 93:
  1141.                 case 91: // fire surge
  1142.                 case 99: // storm of Armadyl
  1143.                 case 36: // bind
  1144.                 case 55: // snare
  1145.                 case 81: // entangle
  1146.                     if (Magic.checkCombatSpell(player, componentId, 1, false)) {
  1147.                         player.setNextFaceWorldTile(new WorldTile(npc
  1148.                                 .getCoordFaceX(npc.getSize()), npc
  1149.                                 .getCoordFaceY(npc.getSize()), npc.getPlane()));
  1150.                         if (!player.getControlerManager().canAttack(npc))
  1151.                             return;
  1152.                         if (npc instanceof Familiar) {
  1153.                             Familiar familiar = (Familiar) npc;
  1154.                             if (familiar == player.getFamiliar()) {
  1155.                                 player.getPackets().sendGameMessage(
  1156.                                         "You can't attack your own familiar.");
  1157.                                 return;
  1158.                             }
  1159.                             if (!familiar.canAttack(player)) {
  1160.                                 player.getPackets().sendGameMessage(
  1161.                                         "You can't attack this npc.");
  1162.                                 return;
  1163.                             }
  1164.                         } else if (!npc.isForceMultiAttacked()) {
  1165.                             if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
  1166.                                 if (player.getAttackedBy() != npc
  1167.                                         && player.getAttackedByDelay() > Utils
  1168.                                         .currentTimeMillis()) {
  1169.                                     player.getPackets().sendGameMessage(
  1170.                                             "You are already in combat.");
  1171.                                     return;
  1172.                                 }
  1173.                                 if (npc.getAttackedBy() != player
  1174.                                         && npc.getAttackedByDelay() > Utils
  1175.                                         .currentTimeMillis()) {
  1176.                                     player.getPackets().sendGameMessage(
  1177.                                             "This npc is already in combat.");
  1178.                                     return;
  1179.                                 }
  1180.                             }
  1181.                         }
  1182.                         player.getActionManager().setAction(
  1183.                                 new PlayerCombat(npc));
  1184.                     }
  1185.                     break;
  1186.                 }
  1187.                 break;
  1188.             }
  1189.             if (Settings.DEBUG)
  1190.                 System.out.println("Spell:" + componentId);
  1191.         } else if (packetId == NPC_CLICK1_PACKET)
  1192.             NPCHandler.handleOption1(player, stream);
  1193.         else if (packetId == NPC_CLICK2_PACKET)
  1194.             NPCHandler.handleOption2(player, stream);
  1195.         else if (packetId == NPC_CLICK3_PACKET)
  1196.             NPCHandler.handleOption3(player, stream);
  1197.         else if (packetId == NPC_CLICK4_PACKET)
  1198.             NPCHandler.handleOption4(player, stream);
  1199.         else if (packetId == OBJECT_CLICK1_PACKET)
  1200.             ObjectHandler.handleOption(player, stream, 1);
  1201.         else if (packetId == OBJECT_CLICK2_PACKET)
  1202.             ObjectHandler.handleOption(player, stream, 2);
  1203.         else if (packetId == OBJECT_CLICK3_PACKET)
  1204.             ObjectHandler.handleOption(player, stream, 3);
  1205.         else if (packetId == OBJECT_CLICK4_PACKET)
  1206.             ObjectHandler.handleOption(player, stream, 4);
  1207.         else if (packetId == OBJECT_CLICK5_PACKET)
  1208.             ObjectHandler.handleOption(player, stream, 5);
  1209.         else if (packetId == ITEM_TAKE_PACKET) {
  1210.             if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
  1211.                     || player.isDead())
  1212.                 return;
  1213.             long currentTime = Utils.currentTimeMillis();
  1214.             if (player.getLockDelay() > currentTime)
  1215.                 // || player.getFreezeDelay() >= currentTime)
  1216.                 return;
  1217.             int y = stream.readUnsignedShort();
  1218.             int x = stream.readUnsignedShortLE();
  1219.             final int id = stream.readUnsignedShort();
  1220.             boolean forceRun = stream.read128Byte() == 1;
  1221.             final WorldTile tile = new WorldTile(x, y, player.getPlane());
  1222.             final int regionId = tile.getRegionId();
  1223.             if (!player.getMapRegionsIds().contains(regionId))
  1224.                 return;
  1225.             final FloorItem item = World.getRegion(regionId).getGroundItem(id,
  1226.                     tile, player);
  1227.             if (item == null || player == null || player.hasFinished())
  1228.                 return;
  1229.             if (player.isIronman() && player != null && item.getOwner() != null
  1230.                     && !item.getOwner().getUsername().equalsIgnoreCase(player.getUsername())
  1231.                     || item.getOwner() == null && player != null && player.isIronman()) {
  1232.                 player.getPackets().sendGameMessage("Sorry, you cannot pick up this item in ironman mode.");
  1233.                 return;
  1234.             }
  1235.             player.stopAll(false);
  1236.             if(forceRun)
  1237.                 player.setRun(forceRun);
  1238.             player.setCoordsEvent(new CoordsEvent(tile, new Runnable() {
  1239.                 @Override
  1240.                 public void run() {
  1241.                     final FloorItem item = World.getRegion(regionId)
  1242.                             .getGroundItem(id, tile, player);
  1243.                     if (item == null)
  1244.                         return;
  1245.                     if (player.isIronman() && player != null && item.getOwner() != null
  1246.                             && !item.getOwner().getUsername().equalsIgnoreCase(player.getUsername())
  1247.                             || item.getOwner() == null && player != null && player.isIronman()) {
  1248.                         player.getPackets().sendGameMessage("Sorry, you cannot pick up this item in ironman mode.");
  1249.                         return;
  1250.                     }
  1251.                     /*if (player.getRights() > 0 || player.isSupporter())
  1252.                         player.getPackets().sendGameMessage("This item was dropped by: "+item.getOwner().getUsername()+ " ("+item.getOwner().getDisplayName()+").");
  1253.                     */
  1254.                     player.setNextFaceWorldTile(tile);
  1255.                     player.addWalkSteps(tile.getX(), tile.getY(), 1);
  1256.                     World.removeGroundItem(player, item);
  1257.                 }
  1258.             }, 1, 1));
  1259.         }
  1260.     }
  1261.  
  1262.     public void processPackets(final int packetId, InputStream stream,
  1263.             int length) {
  1264.         player.setPacketsDecoderPing(Utils.currentTimeMillis());
  1265.         if (packetId == PING_PACKET) {
  1266.             OutputStream packet = new OutputStream(0);
  1267.             packet.writePacket(player, 153);
  1268.             player.getSession().write(packet);// kk we ping :)
  1269.         } else if (packetId == MOUVE_MOUSE_PACKET) {
  1270.             // USELESS PACKET
  1271.         } else if (packetId == KEY_TYPED_PACKET) {
  1272.             // USELESS PACKET
  1273.         } else if (packetId == RECEIVE_PACKET_COUNT_PACKET) {
  1274.             // interface packets
  1275.             stream.readInt();
  1276.         } else if (packetId == ITEM_ON_ITEM_PACKET) {
  1277.             InventoryOptionsHandler.handleItemOnItem(player, stream);
  1278.         } else if (packetId == MAGIC_ON_ITEM_PACKET) {
  1279.             //InventoryOptionsHandler.handleMagicOnItem(player, stream);
  1280.             int interfaceHash = stream.readInt();
  1281.             final int interfaceId = interfaceHash >> 16;
  1282.             final int componentId = interfaceHash - (interfaceId << 16);
  1283.             //int interfaceId = stream.readInt() >> 16;
  1284.             int itemId = stream.readShort128();
  1285.             @SuppressWarnings("unused")
  1286.             int junk = stream.readShort();
  1287.             @SuppressWarnings("unused")
  1288.             int itemSlot = stream.readShortLE();
  1289.             //int interfaceSet = stream.readIntV1();
  1290.             //int spellId = interfaceSet & 0xFFF;
  1291.             //int magicInter = interfaceSet >> 16;
  1292.             MagicOnItem.handleMagic(player, componentId, interfaceId, new Item(itemId));
  1293.             //}
  1294.         } else if (packetId == AFK_PACKET) {
  1295.             //player.getSession().getChannel().close();//not needed since equal to -1
  1296.         } else if (packetId == CLOSE_INTERFACE_PACKET) {
  1297.             if (player.hasStarted() && !player.hasFinished() && !player.isRunning()) { //used for old welcome screen
  1298.                 player.run();
  1299.                 return;
  1300.             }
  1301.             player.stopAll();
  1302.         } else if (packetId == GAME_MESSAGE_INVITATION_PACKET) {
  1303.             boolean forceRun = stream.readUnsignedByte() == 1;
  1304.             int playerIndex = stream.readUnsignedShortLE128();
  1305.             Player p2 = World.getPlayers().get(playerIndex);
  1306.             if (p2 == null || p2 == player || p2.isDead() || p2.hasFinished() || !player.getMapRegionsIds().contains(p2.getRegionId()))
  1307.             return;
  1308.             if (player.isLocked())
  1309.             return;
  1310.             if (forceRun)
  1311.             player.setRun(forceRun);
  1312.             player.stopAll();
  1313.             ClansManager.viewInvite(player, p2);
  1314.         } else if (packetId == MOVE_CAMERA_PACKET) {
  1315.             // not using it atm
  1316.             stream.readUnsignedShort();
  1317.             stream.readUnsignedShort();
  1318.         } else if (packetId == IN_OUT_SCREEN_PACKET) {
  1319.             // not using this check because not 100% efficient
  1320.             @SuppressWarnings("unused")
  1321.             boolean inScreen = stream.readByte() == 1;
  1322.         } else if (packetId == SCREEN_PACKET) {
  1323.             int displayMode = stream.readUnsignedByte();
  1324.             player.setScreenWidth(stream.readUnsignedShort());
  1325.             player.setScreenHeight(stream.readUnsignedShort());
  1326.             @SuppressWarnings("unused")
  1327.             boolean switchScreenMode = stream.readUnsignedByte() == 1;
  1328.             if (!player.hasStarted() || player.hasFinished()
  1329.                     || displayMode == player.getDisplayMode()
  1330.                     || !player.getInterfaceManager().containsInterface(742))
  1331.                 return;
  1332.             player.setDisplayMode(displayMode);
  1333.             player.getInterfaceManager().removeAll();
  1334.             player.getInterfaceManager().sendInterfaces();
  1335.             player.getInterfaceManager().sendInterface(742);
  1336.         } else if (packetId == CLICK_PACKET) {
  1337.             int mouseHash = stream.readShortLE128();
  1338.             int mouseButton = mouseHash >> 15;
  1339.             int time = mouseHash - (mouseButton << 15); // time
  1340.             int positionHash = stream.readIntV1();
  1341.             int y = positionHash >> 16; // y;
  1342.             int x = positionHash - (y << 16); // x
  1343.             @SuppressWarnings("unused")
  1344.             boolean clicked;
  1345.             // mass click or stupid autoclicker, lets stop lagg
  1346.             if (time <= 1 || x < 0 || x > player.getScreenWidth() || y < 0
  1347.                     || y > player.getScreenHeight()) {
  1348.                 // player.getSession().getChannel().close();
  1349.                 clicked = false;
  1350.                 return;
  1351.             }
  1352.             clicked = true;
  1353.         } else if (packetId == DIALOGUE_CONTINUE_PACKET) {
  1354.             int interfaceHash = stream.readInt();
  1355.             int junk = stream.readShort128();
  1356.             int interfaceId = interfaceHash >> 16;
  1357.             int buttonId = (interfaceHash & 0xFF);
  1358.             if (Utils.getInterfaceDefinitionsSize() <= interfaceId) {
  1359.                 // hack, or server error or client error
  1360.                 // player.getSession().getChannel().close();
  1361.                 return;
  1362.             }
  1363.             if (!player.isRunning()
  1364.                     || !player.getInterfaceManager().containsInterface(
  1365.                             interfaceId))
  1366.                 return;
  1367.             if(Settings.DEBUG)
  1368.                 Logger.log(this, "Dialogue: "+interfaceId+", "+buttonId+", "+junk);
  1369.             int componentId = interfaceHash - (interfaceId << 16);
  1370.             if (interfaceId == 326) {
  1371.                 switch (componentId) {
  1372.                 case 5:
  1373.                     WorldTile teletile = (WorldTile) player.getTemporaryAttributes().remove("groupteleport");
  1374.                     if (teletile == null) {
  1375.                         return;
  1376.                     }
  1377.                     Magic.sendLunarTeleportSpell(player, 0, 0, teletile);
  1378.                     break;
  1379.                     default:
  1380.                         player.getTemporaryAttributes().remove("groupteleport");
  1381.                         player.getInterfaceManager().closeScreenInterface();
  1382.                         break;
  1383.                 }
  1384.                 return;
  1385.             }
  1386.             player.getDialogueManager().continueDialogue(interfaceId,
  1387.                     componentId);
  1388.         } else if (packetId == WORLD_MAP_CLICK) {
  1389.             int coordinateHash = stream.readInt();
  1390.             int x = coordinateHash >> 14;
  1391.             int y = coordinateHash & 0x3fff;
  1392.             int plane = coordinateHash >> 28;
  1393.             Integer hash  =  (Integer)player.getTemporaryAttributes().get("worldHash");
  1394.             if (hash == null || coordinateHash != hash)
  1395.                 player.getTemporaryAttributes().put("worldHash", coordinateHash);
  1396.             else {
  1397.                 player.getTemporaryAttributes().remove("worldHash");
  1398.                 player.getHintIconsManager().addHintIcon(x, y, plane, 20, 0, 2, -1, true);
  1399.                 player.getPackets().sendConfig(1159, coordinateHash);
  1400.             }
  1401.         } else if (packetId == LOBBY_MAIN_CLICK_PACKET) {
  1402.             stream.readShort();
  1403.             stream.readString();
  1404.             String idk3 = stream.readString();
  1405.             stream.readString();
  1406.             stream.readByte();
  1407.             if (idk3.equalsIgnoreCase("account_settings.ws?mod=recoveries")) {
  1408.                 // player.getPackets().sendOpenURL((Settings.WEBSITE_NAVI[1]));
  1409.             } else if (idk3.equalsIgnoreCase("account_settings.ws?mod=email")) {
  1410.                 // player.getPackets().sendOpenURL((Settings.WEBSITE_NAVI[1]));
  1411.             } else if (idk3
  1412.                     .equalsIgnoreCase("account_settings.ws?mod=messages")) {
  1413.                 // player.getPackets().sendOpenURL((Settings.WEBSITE_NAVI[1]));
  1414.             } else if (idk3
  1415.                     .equalsIgnoreCase("purchasepopup.ws?externalName=rs")) {
  1416.                 // player.getPackets().sendOpenURL(
  1417.                 // Settings.FORUM_EXTERNAL_LINKS[3]);
  1418.             }
  1419.         } else if (packetId == LOBBY_FRIEND_CHAT_SETTINGS) {
  1420.             stream.readByte();
  1421.             int status = stream.readByte();
  1422.             stream.readByte();
  1423.             player.getFriendsIgnores().setPrivateStatus(status);
  1424.         } else if (packetId == WORLD_LIST_UPDATE) {
  1425.             int updateType = stream.readInt();
  1426.             player.getPackets().sendWorldList(updateType == 0);
  1427.         } else if (packetId == ACTION_BUTTON1_PACKET
  1428.                 || packetId == ACTION_BUTTON2_PACKET
  1429.                 || packetId == ACTION_BUTTON4_PACKET
  1430.                 || packetId == ACTION_BUTTON5_PACKET
  1431.                 || packetId == ACTION_BUTTON6_PACKET
  1432.                 || packetId == ACTION_BUTTON7_PACKET
  1433.                 || packetId == ACTION_BUTTON8_PACKET
  1434.                 || packetId == ACTION_BUTTON3_PACKET
  1435.                 || packetId == ACTION_BUTTON9_PACKET
  1436.                 || packetId == ACTION_BUTTON10_PACKET) {
  1437.             ButtonHandler.handleButtons(player, stream, packetId);
  1438.         } else if (packetId == GE_SEARCH_PACKET) {
  1439.             int itemId = stream.readUnsignedShort();
  1440.             player.getGEManager().chooseItem(itemId);
  1441.         } else if (packetId == ENTER_LONG_TEXT_PACKET) {
  1442.             String value = stream.readString();
  1443.             if (value.equals(""))
  1444.                 return;
  1445.             if (player.getTemporaryAttributes().remove("entering_note") == Boolean.TRUE) {
  1446.                 player.getNotes().add(value);
  1447.                 return;
  1448.             } else if (player.getTemporaryAttributes().remove("editing_note") == Boolean.TRUE){
  1449.                 player.getNotes().edit(value);
  1450.                 return;
  1451.             }
  1452.             if (player.getInterfaceManager().containsInterface(1103))
  1453.                 ClansManager.setClanMottoInterface(player, value);
  1454.             else if (player.getInterfaceManager().containsInterface(1094)
  1455.                     && player.getTemporaryAttributes().remove("joinguestclan") != null) {
  1456.                 ClansManager.connectToClan(player, value, true);
  1457.                 player.getTemporaryAttributes().remove("joinguestclan");
  1458.             } else {
  1459.                 if (Utils.invalidClanString(value)) {
  1460.                     //player.sm("Illegal characters were used in your clans name!");
  1461.                     return;
  1462.                 }
  1463.                 ClansManager.createClan(player, value);
  1464.             }
  1465.         } else if (packetId == ENTER_NAME_PACKET) {
  1466.             if (!player.isRunning() || player.isDead())
  1467.                 return;
  1468.             String value = stream.readString();
  1469.             @SuppressWarnings("unused")
  1470.             int input = stream.readInt();
  1471.             if (value.equals(""))
  1472.                 return;
  1473.            
  1474.             if (player.getInterfaceManager().containsInterface(1108))
  1475.                 player.getFriendsIgnores().setChatPrefix(value);
  1476.             else if (player.getTemporaryAttributes().remove("PetNaming") != null) {
  1477.                 if (Utils.containsInvalidTitleCharacter(value)) {
  1478.                     player.getDialogueManager().startDialogue("SimpleMessage", "You have entered invaild characters or word.");
  1479.                     return;
  1480.                 }
  1481.                 if (player.getPet() != null)
  1482.                     player.getPet().setName(Utils.formatPlayerNameForDisplay(value));
  1483.             }
  1484.             /*else if (player.getTemporaryAttributes().get("donate_well") == Boolean.TRUE) {
  1485.                 try {
  1486.                     WellOfGoodwill.donateGold(player, Integer.parseInt(value));
  1487.                     player.getTemporaryAttributes().put("donate_well", Boolean.FALSE);
  1488.                 } catch (Exception e) {
  1489.                     player.getDialogueManager().startDialogue("SimpleMessage", "Invalid format.");
  1490.                 }
  1491.             }*/
  1492.             else if (player.getTemporaryAttributes().get("setinstancepassword") == Boolean.TRUE) {
  1493.                 player.getTemporaryAttributes().put("setinstancepassword", Boolean.FALSE);
  1494.                 String pass = value;
  1495.                 if (pass.equals(null) || pass.equals("")) {
  1496.                     player.getTemporaryAttributes().put("instancepassword", "gjaerhashersdhedsdsadefdgj");//a random string
  1497.                     return;
  1498.                 }
  1499.                 player.getTemporaryAttributes().put("instancepassword", pass);
  1500.                 return;
  1501.             }
  1502.             else if (player.getTemporaryAttributes().get("instancepass") == Boolean.TRUE) {
  1503.                 String pass = value;
  1504.                 String name = (String) player.getTemporaryAttributes().remove("instanceowner");
  1505.                 if (pass.equals(null) || pass.equals("") || name.equals("") || name.equals(null)) {
  1506.                     player.getTemporaryAttributes().put("instancepass", Boolean.FALSE);
  1507.                     return;
  1508.                 }
  1509.                 if (!World.containsPlayer(name)) {
  1510.                     player.getPackets().sendGameMessage("Unable to find or locate the player "+name+".");
  1511.                     player.getTemporaryAttributes().put("instancepass", Boolean.FALSE);
  1512.                     return;
  1513.                 }
  1514.                 Player owner = World.getPlayer(name);
  1515.                 if (owner == null) {
  1516.                     player.getTemporaryAttributes().put("instancepass", Boolean.FALSE);
  1517.                     return;
  1518.                 }
  1519.                 if (owner == player) {
  1520.                     player.getTemporaryAttributes().put("instancepass", Boolean.FALSE);
  1521.                     return;
  1522.                 }
  1523.                 if (!owner.getInstance().password.equalsIgnoreCase(pass)) {
  1524.                     player.getTemporaryAttributes().put("instancepass", Boolean.FALSE);
  1525.                     player.getPackets().sendGameMessage("The password entered was incorrect.");
  1526.                     return;
  1527.                 }
  1528.                 Instance.joinInstance(owner, player, true);
  1529.                 player.getTemporaryAttributes().put("instancepass", Boolean.FALSE);
  1530.                 return;
  1531.             }
  1532.             else if (player.getTemporaryAttributes().get("joininstance") == Boolean.TRUE) {
  1533.                 String name = value;
  1534.                 if (name.equals(null) || name.equals("")) {
  1535.                     player.getTemporaryAttributes().put("joininstance", Boolean.FALSE);
  1536.                     return;
  1537.                 }
  1538.                 if (!World.containsPlayer(name)) {
  1539.                     player.getPackets().sendGameMessage("Unable to find or locate the player "+name+".");
  1540.                     player.getTemporaryAttributes().put("joininstance", Boolean.FALSE);
  1541.                     return;
  1542.                 }
  1543.                 Player owner = World.getPlayer(name);
  1544.                 if (owner == null) {
  1545.                     player.getTemporaryAttributes().put("joininstance", Boolean.FALSE);
  1546.                     return;
  1547.                 }
  1548.                 if (owner == player) {
  1549.                     player.getTemporaryAttributes().put("joininstance", Boolean.FALSE);
  1550.                     return;
  1551.                 }
  1552.                 Instance.joinInstance(owner, player, false);
  1553.                 player.getTemporaryAttributes().put("joininstance", Boolean.FALSE);
  1554.                 return;
  1555.             }
  1556.             else if (player.getTemporaryAttributes().remove("ForumThreadId") != null)//temporary
  1557.                 ClansManager.setThreadIdInterface(player, value);//temporary
  1558.             else if (player.getTemporaryAttributes().remove("banclanplayer") != null)
  1559.                 ClansManager.banPlayer(player, value);
  1560.             else if (player.getTemporaryAttributes().remove("unbanclanplayer") != null)
  1561.                 ClansManager.unbanPlayer(player, value);
  1562.             else if (player.getTemporaryAttributes().get("yellcolor") == Boolean.TRUE) {
  1563.                 if(value.length() != 6) {
  1564.                     player.getDialogueManager().startDialogue("SimpleMessage", "The HEX yell color you wanted to pick cannot be longer and shorter then 6.");
  1565.                 } else if(Utils.containsInvalidCharacter(value) || value.contains("_")) {
  1566.                     player.getDialogueManager().startDialogue("SimpleMessage", "The requested yell color can only contain numeric and regular characters.");
  1567.                 } else {
  1568.                     player.setYellColor(value);
  1569.                     player.getDialogueManager().startDialogue("SimpleMessage", "Your yell color has been changed to <col="+player.getYellColor()+">"+player.getYellColor()+"</col>.");
  1570.                 }
  1571.                 player.getTemporaryAttributes().put("yellcolor", Boolean.FALSE);
  1572.             } else if (player.getTemporaryAttributes().get("yellshade") == Boolean.TRUE) { 
  1573.                 if(value.length() != 6) {
  1574.                     player.getDialogueManager().startDialogue("SimpleMessage", "The HEX yell shade you wanted to pick cannot be longer and shorter then 6.");
  1575.                 } else if(Utils.containsInvalidCharacter(value) || value.contains("_")) {
  1576.                     player.getDialogueManager().startDialogue("SimpleMessage", "The requested yell shade can only contain numeric and regular characters.");
  1577.                 } else {
  1578.                     player.setYellShade(value);
  1579.                     player.getDialogueManager().startDialogue("SimpleMessage", "Your yell color has been changed to <col="+player.getShadColor()+">"+player.getShadColor()+"</col>.");
  1580.                 }          
  1581.                 player.getTemporaryAttributes().put("yellshade", Boolean.FALSE);
  1582.             } else if (player.getTemporaryAttributes().get("yellprefix") == Boolean.TRUE) {
  1583.             String[] invalid = { "<euro", "<img", "<img=", "<col", "<col=",
  1584.                     "<shad", "<shad=", "<str>", "<u>", "<br" };
  1585.             for (String s : invalid)
  1586.                 if (value.contains(s)) {
  1587.                     player.getPackets().sendGameMessage(
  1588.                             "You cannot add additional code to the message.");
  1589.                     return;
  1590.                 }
  1591.                 if(value.length() > 17) {
  1592.                     player.getDialogueManager().startDialogue("SimpleMessage", "The prefix cannot be more than 16 characters.");
  1593.                 } else {
  1594.                     player.setPrefix(value);
  1595.                     player.getDialogueManager().startDialogue("SimpleMessage", "Your yell prefix has been changed to "+player.getPrefix()+".");
  1596.                 }
  1597.                 player.getTemporaryAttributes().put("yellprefix", Boolean.FALSE);
  1598.             }
  1599.            
  1600.             else if (player.getTemporaryAttributes().get("titlecolor") == Boolean.TRUE) {
  1601.                 if(value.length() != 6) {
  1602.                     player.getDialogueManager().startDialogue("SimpleMessage", "The HEX yell color you wanted to pick cannot be longer and shorter then 6.");
  1603.                 } else if(Utils.containsInvalidCharacter(value) || value.contains("_")) {
  1604.                     player.getDialogueManager().startDialogue("SimpleMessage", "The requested title color can only contain numeric and regular characters.");
  1605.                 } else {
  1606.                     player.settitlecolor(value);
  1607.                     player.getAppearance().setTitle(900);
  1608.                     player.getDialogueManager().startDialogue("SimpleMessage", "Your title color has been changed to <col="+player.getTitleColor()+">"+player.getTitleColor()+"</col>.");
  1609.                 }
  1610.                 player.getTemporaryAttributes().put("titlecolor", Boolean.FALSE);
  1611.             }
  1612.             //else if (player.getTemporaryAttributtes().get("customtitle") == Boolean.TRUE) {
  1613.             else if (player.getTemporaryAttributes().remove("customtitle") != null) {
  1614.                 if(value.length() > 12) {
  1615.                     player.getDialogueManager().startDialogue("SimpleMessage", "Titles are limted to twelve characters due to spam.");
  1616.                 } else if(Utils.containsInvalidTitleCharacter(value)) {
  1617.                        
  1618.                     player.getDialogueManager().startDialogue("SimpleMessage", "You have entered invaild characters or word.");
  1619.                     player.getAppearance().setTitle(0);
  1620.                 } else {
  1621.                     player.setTitle(value);
  1622.                     player.getAppearance().setTitle(900);
  1623.                     player.getDialogueManager().startDialogue("SimpleMessage", "Your title has been changed to " + player.getTitle() + ".");
  1624.                 }
  1625.                 player.getTemporaryAttributes().put("customTitle", Boolean.FALSE);
  1626.             } else if(player.getTemporaryAttributes().get("teleto_player") == Boolean.TRUE) {
  1627.                 String name = value;
  1628.                 Player target = World.getPlayerByDisplayName(name);
  1629.                 if(target == null) {
  1630.                     player.getPackets().sendGameMessage(
  1631.                             "Couldn't find player " + name + ".");
  1632.                 player.getTemporaryAttributes().put("teleto_player", Boolean.FALSE);
  1633.                 } else {
  1634.                     player.setNextWorldTile(target);
  1635.                 player.getTemporaryAttributes().put("teleto_player", Boolean.FALSE);
  1636.                 return;
  1637.          }
  1638.             } else if(player.getTemporaryAttributes().get("highscores") == Boolean.TRUE) {
  1639.                 String name = value;
  1640.                 Player target = World.getPlayerByDisplayName(name);
  1641.                 if(target == null) {
  1642.                     player.getPackets().sendGameMessage(
  1643.                             "Couldn't find " + name + ".");
  1644.                 player.getTemporaryAttributes().put("highscores", Boolean.FALSE);
  1645.                 } else {
  1646.                     int totalXp = 0;
  1647.                     for(int i = 0; i < 24; i++) {
  1648.                         totalXp += player.getSkills().getXp(i);
  1649.                     }
  1650.                     int totalXp2 = 0;
  1651.                     for(int i = 0; i < 24; i++) {
  1652.                         totalXp2 += target.getSkills().getXp(i);
  1653.                     }
  1654.                     if (totalXp > totalXp2) {
  1655.                         player.HoL = "a higher";
  1656.                     } else if (target.getUsername() == player.getUsername()) {
  1657.                         player.HoL = "the same";
  1658.                     } else {
  1659.                         player.HoL = "a lower";
  1660.                     }
  1661.                     player.getInterfaceManager().sendInterface(960);
  1662.                     player.getPackets().sendIComponentText(960, 69, "The Highscores Of "+target.getDisplayName());
  1663.                     player.getPackets().sendIComponentText(960, 49, "<u>Combat</u>");
  1664.                     player.getPackets().sendIComponentText(960, 56, "Level "+ target.getSkills().getLevel(Skills.ATTACK) +" in Attack.");
  1665.                     player.getPackets().sendIComponentText(960, 61, "Level "+ target.getSkills().getLevel(Skills.STRENGTH) +" in Strength.");
  1666.                     player.getPackets().sendIComponentText(960, 62, "Level "+ target.getSkills().getLevel(Skills.DEFENCE) +" in Defence.");
  1667.                     player.getPackets().sendIComponentText(960, 54, "Level "+ target.getSkills().getLevel(Skills.RANGE) +" in Range.");
  1668.                     player.getPackets().sendIComponentText(960, 63, "Level "+ target.getSkills().getLevel(Skills.PRAYER) +" in Prayer.");
  1669.                     player.getPackets().sendIComponentText(960, 55, "Level "+ target.getSkills().getLevel(Skills.MAGIC) +" in Magic.");
  1670.                     player.getPackets().sendIComponentText(960, 51, "Level "+ target.getSkills().getLevel(Skills.HITPOINTS) +" in Hitpoints.");
  1671.                     player.getPackets().sendIComponentText(960, 60, "Level "+ target.getSkills().getLevel(Skills.SUMMONING) +" in Summoning.");
  1672.                     player.getPackets().sendIComponentText(960, 58, "Level "+ target.getSkills().getLevel(Skills.DUNGEONEERING) +" in Dungeoneering.");
  1673.                     player.getPackets().sendIComponentText(960, 53, "<u>Skills</u>");
  1674.                     player.getPackets().sendIComponentText(960, 50, "Level "+ target.getSkills().getLevel(Skills.AGILITY) +" in Agility.");
  1675.                     player.getPackets().sendIComponentText(960, 57, "Level "+ target.getSkills().getLevel(Skills.HERBLORE) +" in Herblore.");
  1676.                     player.getPackets().sendIComponentText(960, 59, "Level "+ target.getSkills().getLevel(Skills.THIEVING) +" in Thieving.");
  1677.                     player.getPackets().sendIComponentText(960, 52, "Level "+ target.getSkills().getLevel(Skills.CRAFTING) +" in Crafting.");
  1678.                    
  1679.                     //Right side page
  1680.                     player.getPackets().sendIComponentText(960, 33, "Level "+ target.getSkills().getLevel(Skills.FLETCHING) +" in Fletching.");
  1681.                     player.getPackets().sendIComponentText(960, 39, "Level "+ target.getSkills().getLevel(Skills.SLAYER) +" in Slayer.");
  1682.                     player.getPackets().sendIComponentText(960, 36, "Level "+ target.getSkills().getLevel(Skills.HUNTER) +" in Hunter.");
  1683.                     player.getPackets().sendIComponentText(960, 44, "Level "+ target.getSkills().getLevel(Skills.MINING) +" in Mining.");
  1684.                     player.getPackets().sendIComponentText(960, 37, "Level "+ target.getSkills().getLevel(Skills.SMITHING) +" in Smithing.");
  1685.                     player.getPackets().sendIComponentText(960, 46, "Level "+ target.getSkills().getLevel(Skills.FISHING) +" in Fishing.");
  1686.                     player.getPackets().sendIComponentText(960, 40, "Level "+ target.getSkills().getLevel(Skills.COOKING) +" in Cooking.");
  1687.                     player.getPackets().sendIComponentText(960, 42, "Level "+ target.getSkills().getLevel(Skills.FIREMAKING) +" in Firemaking.");
  1688.                     player.getPackets().sendIComponentText(960, 34, "Level "+ target.getSkills().getLevel(Skills.WOODCUTTING) +" in Woodcutting.");
  1689.                     player.getPackets().sendIComponentText(960, 35, "Level "+ target.getSkills().getLevel(Skills.FARMING) +" in Farming.");                
  1690.                     player.getPackets().sendIComponentText(960, 38, "Level "+ target.getSkills().getLevel(Skills.CONSTRUCTION) +" in Construction.");
  1691.                     player.getPackets().sendIComponentText(960, 43, "Level "+ target.getSkills().getLevel(Skills.RUNECRAFTING) +" in Runecrafting.");
  1692.                     player.getPackets().sendIComponentText(960, 47, "You have <u>"+player.HoL+"</u> total level");
  1693.                     player.getPackets().sendIComponentText(960, 45, "than <u>"+target.getUsername()+"</u>.");
  1694.                     player.getPackets().sendIComponentText(960, 41, "Times Prestiged: "+target.prestigeNumber);
  1695.                    
  1696.                     //buttons
  1697.                     player.getPackets().sendIComponentText(960, 70, "Previous");
  1698.                     player.getPackets().sendIComponentText(960, 71, "Next");
  1699.                 player.getTemporaryAttributes().put("highscores", Boolean.FALSE);
  1700.                 return;
  1701.          }
  1702.             } else if(player.getTemporaryAttributes().get("drop_log") == Boolean.TRUE) {
  1703.                 String name = value;
  1704.                 Player target = World.getPlayerByDisplayName(name);
  1705.                 if(target == null) {
  1706.                     player.getPackets().sendGameMessage(
  1707.                             "Couldn't find " + name + ".");
  1708.                 player.getTemporaryAttributes().put("drop_log", Boolean.FALSE);
  1709.                 } else {
  1710.                     player.getInterfaceManager().sendInterface(960);
  1711.                     player.getPackets().sendIComponentText(960, 69, "The drop log of "+target.getDisplayName()); // Title
  1712.                     player.getPackets().sendIComponentText(960, 49, "Bandos chestplate: "+target.bandosChest);
  1713.                     player.getPackets().sendIComponentText(960, 56, "Bandos tasset: "+target.bandosTassets);
  1714.                     player.getPackets().sendIComponentText(960, 61, "Bandos hilt: "+target.bandosHilt);
  1715.                     player.getPackets().sendIComponentText(960, 62, "Armadyl chestplate: "+target.armadylPlate);
  1716.                     player.getPackets().sendIComponentText(960, 54, "Armadyl plateskirt: "+target.armadylLegs);
  1717.                     player.getPackets().sendIComponentText(960, 63, "Armadyl helmet: "+target.armadylHelm);
  1718.                     player.getPackets().sendIComponentText(960, 55, "Armadyl hilt: "+target.armadylHilt);
  1719.                     player.getPackets().sendIComponentText(960, 51, "Torva helm: "+target.torvaHelm);
  1720.                     player.getPackets().sendIComponentText(960, 60, "Torva plate: "+target.torvaPlate);
  1721.                     player.getPackets().sendIComponentText(960, 58, "Torva platelegs: "+target.torvaLegs);
  1722.                     player.getPackets().sendIComponentText(960, 53, "Dragon claws: "+target.dragonClaws);
  1723.                     player.getPackets().sendIComponentText(960, 50, "Dragon crossbow: "+target.dragonCrossbow);
  1724.                     player.getPackets().sendIComponentText(960, 57, "Virtus wand: "+target.virtusWand);
  1725.                     player.getPackets().sendIComponentText(960, 59, "Virtus book: "+target.virtusBook);
  1726.                     player.getPackets().sendIComponentText(960, 52, "Zaryte bow: "+target.zaryteBow);
  1727.                    
  1728.                     //Right side page
  1729.                     player.getPackets().sendIComponentText(960, 33, "Virtus mask: "+target.virtusMask);
  1730.                     player.getPackets().sendIComponentText(960, 39, "Virtus robe top: "+target.virtusTop);
  1731.                     player.getPackets().sendIComponentText(960, 36, "Virtus robe legs: "+target.virtusLegs);
  1732.                     player.getPackets().sendIComponentText(960, 44, "Pernix cowl: "+target.pernixCowl);
  1733.                     player.getPackets().sendIComponentText(960, 37, "Pernix body: "+target.pernixBody);
  1734.                     player.getPackets().sendIComponentText(960, 46, "Pernix chaps: "+target.pernixChaps);
  1735.                     player.getPackets().sendIComponentText(960, 40, "Seismic wand: "+target.seismicWand);
  1736.                     player.getPackets().sendIComponentText(960, 42, "Seismic singularity: "+target.seismicSingularity);
  1737.                     player.getPackets().sendIComponentText(960, 34, "Spectral sigil: "+target.spectralSigil);
  1738.                     player.getPackets().sendIComponentText(960, 35, "Arcane sigil: "+target.arcaneSigil);
  1739.                     player.getPackets().sendIComponentText(960, 38, "Elysian Sigil: "+target.elysianSigil);
  1740.                     player.getPackets().sendIComponentText(960, 43, "Divine sigil: "+target.divineSigil);
  1741.                     player.getPackets().sendIComponentText(960, 47, "");
  1742.                     player.getPackets().sendIComponentText(960, 45, "PK'd an item worth:");
  1743.                     player.getPackets().sendIComponentText(960, 41, ""+Shop.commas(Integer.toString(target.highestGPKill))+" coins.");
  1744.  
  1745.  
  1746.                     //Right and left button text
  1747.                     player.getPackets().sendIComponentText(960, 70, "");
  1748.                     player.getPackets().sendIComponentText(960, 71, "");
  1749.                 player.getTemporaryAttributes().put("drop_log", Boolean.FALSE);
  1750.                 return;
  1751.          }
  1752.             } else if(player.getTemporaryAttributes().get("teleto_house") == Boolean.TRUE) {
  1753.                 player.getTemporaryAttributes().put("teleto_house", Boolean.FALSE);
  1754.                 String name = value;
  1755.                 Player target = World.getPlayerByDisplayName(name);
  1756.                 if (target == null || target.inBuildMode == true || target.hasLocked == true/* || Wilderness.isAtWild(target)== true*/
  1757.                         || (!(target.getControlerManager().getControler() instanceof HouseControler))) {
  1758.                     player.getPackets().sendGameMessage(
  1759.                             "Cannot enter the house of " + name + ".");
  1760.                 //player.getTemporaryAttributes().put("teleto_house", Boolean.FALSE);
  1761.                    
  1762.                 } else {
  1763.                     target.getHouse().joinHouse(player);
  1764.                 //player.getTemporaryAttributes().put("teleto_house", Boolean.FALSE);
  1765.                 return;
  1766.          }
  1767.             }   else if(player.getTemporaryAttributes().get("teletome_player") == Boolean.TRUE) {
  1768.                     String name = value;
  1769.                     Player target = World.getPlayerByDisplayName(name);
  1770.                     if(target == null) {
  1771.                         player.getPackets().sendGameMessage(
  1772.                                 "Couldn't find player " + name + ".");
  1773.                         player.getTemporaryAttributes().put("teletome_player", Boolean.FALSE);
  1774.              } else {
  1775.                         if (target.isLocked() || target.getControlerManager().getControler() != null) {
  1776.                             player.getPackets().sendGameMessage("You cannot teleport this player.");
  1777.                             player.getTemporaryAttributes().put("teletome_player", Boolean.FALSE);
  1778.                             return;
  1779.                         }
  1780.                         player.getTemporaryAttributes().put("teletome_player", Boolean.FALSE);
  1781.                         target.setNextWorldTile(player);
  1782.                     }
  1783.                     return;
  1784.             }
  1785.              else if(player.getTemporaryAttributes().get("kick_player") == Boolean.TRUE) {
  1786.                     String name = value;
  1787.                     Player target = World.getPlayerByDisplayName(name);
  1788.                     if (target == null) {
  1789.                         player.getPackets().sendGameMessage(
  1790.                                 Utils.formatPlayerNameForDisplay(name)+" is not logged in.");
  1791.                         player.getTemporaryAttributes().put("kick_player", Boolean.FALSE);
  1792.                         return;
  1793.                     }
  1794.                     if (target.getUsername().equalsIgnoreCase("sam")) {
  1795.                         player.getPackets().sendGameMessage(
  1796.                                 "<col=FF0000>Unable to Kick A Developer.");
  1797.                         player.getTemporaryAttributes().put("kick_player", Boolean.FALSE);
  1798.                         return;
  1799.                     }
  1800.                     target.getSession().getChannel().close();
  1801.                     player.getPackets().sendGameMessage("You have kicked: "+target.getDisplayName()+".");
  1802.                     player.getTemporaryAttributes().put("kick_player", Boolean.FALSE);
  1803.                     return;
  1804.              }
  1805.              
  1806.              else if(player.getTemporaryAttributes().get("mute_player") == Boolean.TRUE) {
  1807.                     String name = value;
  1808.                     Player target = World.getPlayerByDisplayName(name);
  1809.                     if (target != null) {
  1810.                         //target.setMuted(Utils.currentTimeMillis()
  1811.                                 //+ (1 * 60 * 60 * 1000));
  1812.                         target.setMuted(Utils.currentTimeMillis()
  1813.                                 + (1 * 60 * 60 * 1000));
  1814.                         target.getPackets().sendGameMessage(
  1815.                                 "You've been muted for " + ("1 Hour by ") +Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  1816.                         player.getPackets().sendGameMessage(
  1817.                                 "You have muted " + ("1 hour by ") + target.getDisplayName()+".");
  1818.                         player.getTemporaryAttributes().put("mute_player", Boolean.FALSE);
  1819.                     } else {
  1820.                         name = Utils.formatPlayerNameForProtocol(name);
  1821.                         if(!SerializableFilesManager.containsPlayer(name)) {
  1822.                             player.getPackets().sendGameMessage(
  1823.                                     "Account name "+Utils.formatPlayerNameForDisplay(name)+" doesn't exist.");
  1824.                             player.getTemporaryAttributes().put("mute_player", Boolean.FALSE);
  1825.                             return;
  1826.                         }
  1827.                         target = SerializableFilesManager.loadPlayer(name);
  1828.                         target.setUsername(name);
  1829.                         target.setMuted(Utils.currentTimeMillis()
  1830.                                 + (1 * 60 * 60 * 1000));
  1831.                         player.getPackets().sendGameMessage(
  1832.                                 "You have muted " + ("1 hour by ") + target.getDisplayName()+".");
  1833.                         SerializableFilesManager.savePlayer(target);
  1834.                         player.getTemporaryAttributes().put("mute_player", Boolean.FALSE);
  1835.                     }
  1836.                     return;
  1837.              
  1838.              }
  1839.              else if(player.getTemporaryAttributes().get("mute_player1") == Boolean.TRUE) {
  1840.                     String name = value;
  1841.                     Player target = World.getPlayerByDisplayName(name);
  1842.                     if (target != null) {
  1843.                         //target.setMuted(Utils.currentTimeMillis()
  1844.                                 //+ (1 * 60 * 60 * 1000));
  1845.                         target.setMuted(Utils.currentTimeMillis()
  1846.                                 + (6 * 60 * 60 * 1000));
  1847.                         target.getPackets().sendGameMessage(
  1848.                                 "You've been muted for " + ("6 Hour by ") +Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  1849.                         player.getPackets().sendGameMessage(
  1850.                                 "You have muted " + ("6 hour by ") + target.getDisplayName()+".");
  1851.                         player.getTemporaryAttributes().put("mute_player1", Boolean.FALSE);
  1852.                     } else {
  1853.                         name = Utils.formatPlayerNameForProtocol(name);
  1854.                         if(!SerializableFilesManager.containsPlayer(name)) {
  1855.                             player.getPackets().sendGameMessage(
  1856.                                     "Account name "+Utils.formatPlayerNameForDisplay(name)+" doesn't exist.");
  1857.                             player.getTemporaryAttributes().put("mute_player1", Boolean.FALSE);
  1858.                             return;
  1859.                         }
  1860.                         target = SerializableFilesManager.loadPlayer(name);
  1861.                         target.setUsername(name);
  1862.                         target.setMuted(Utils.currentTimeMillis()
  1863.                                 + (6 * 60 * 60 * 1000));
  1864.                         player.getPackets().sendGameMessage(
  1865.                                 "You have muted " + ("6 hour by ") + target.getDisplayName()+".");
  1866.                         SerializableFilesManager.savePlayer(target);
  1867.                         player.getTemporaryAttributes().put("mute_player1", Boolean.FALSE);
  1868.                     }
  1869.                     return;
  1870.              
  1871.              }
  1872.              
  1873.                      else if(player.getTemporaryAttributes().get("mute_player2") == Boolean.TRUE) {
  1874.                     String name = value;
  1875.                     Player target = World.getPlayerByDisplayName(name);
  1876.                     if (target != null) {
  1877.                         //target.setMuted(Utils.currentTimeMillis()
  1878.                                 //+ (1 * 60 * 60 * 1000));
  1879.                         target.setMuted(Utils.currentTimeMillis()
  1880.                                 + (12 * 60 * 60 * 1000));
  1881.                         target.getPackets().sendGameMessage(
  1882.                                 "You've been muted for " + ("12 Hour by ") +Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  1883.                         player.getPackets().sendGameMessage(
  1884.                                 "You have muted " + ("12 hour by ") + target.getDisplayName()+".");
  1885.                         player.getTemporaryAttributes().put("mute_player2", Boolean.FALSE);
  1886.                     } else {
  1887.                         name = Utils.formatPlayerNameForProtocol(name);
  1888.                         if(!SerializableFilesManager.containsPlayer(name)) {
  1889.                             player.getPackets().sendGameMessage(
  1890.                                     "Account name "+Utils.formatPlayerNameForDisplay(name)+" doesn't exist.");
  1891.                             player.getTemporaryAttributes().put("mute_player2", Boolean.FALSE);
  1892.                             return;
  1893.                         }
  1894.                         target = SerializableFilesManager.loadPlayer(name);
  1895.                         target.setUsername(name);
  1896.                         target.setMuted(Utils.currentTimeMillis()
  1897.                                 + (12 * 60 * 60 * 1000));
  1898.                         player.getPackets().sendGameMessage(
  1899.                                 "You have muted " + ("12 hour by ") + target.getDisplayName()+".");
  1900.                         SerializableFilesManager.savePlayer(target);
  1901.                         player.getTemporaryAttributes().put("mute_player2", Boolean.FALSE);
  1902.                     }
  1903.                     return;
  1904.              
  1905.              }
  1906.              
  1907.              else if(player.getTemporaryAttributes().get("mute_player3") == Boolean.TRUE) {
  1908.                     String name = value;
  1909.                     Player target = World.getPlayerByDisplayName(name);
  1910.                     if (target != null) {
  1911.                         //target.setMuted(Utils.currentTimeMillis()
  1912.                                 //+ (1 * 60 * 60 * 1000));
  1913.                         target.setMuted(Utils.currentTimeMillis()
  1914.                                 + (24 * 60 * 60 * 1000));
  1915.                         target.getPackets().sendGameMessage(
  1916.                                 "You've been muted for " + ("1 day by ") +Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  1917.                         player.getPackets().sendGameMessage(
  1918.                                 "You have muted " + ("1 day by ") + target.getDisplayName()+".");
  1919.                         player.getTemporaryAttributes().put("mute_player3", Boolean.FALSE);
  1920.                     } else {
  1921.                         name = Utils.formatPlayerNameForProtocol(name);
  1922.                         if(!SerializableFilesManager.containsPlayer(name)) {
  1923.                             player.getPackets().sendGameMessage(
  1924.                                     "Account name "+Utils.formatPlayerNameForDisplay(name)+" doesn't exist.");
  1925.                             player.getTemporaryAttributes().put("mute_player3", Boolean.FALSE);
  1926.                             return;
  1927.                         }
  1928.                         target = SerializableFilesManager.loadPlayer(name);
  1929.                         target.setUsername(name);
  1930.                         target.setMuted(Utils.currentTimeMillis()
  1931.                                 + (24 * 60 * 60 * 1000));
  1932.                         player.getPackets().sendGameMessage(
  1933.                                 "You have muted " + ("1 day by ") + target.getDisplayName()+".");
  1934.                         SerializableFilesManager.savePlayer(target);
  1935.                         player.getTemporaryAttributes().put("mute_player3", Boolean.FALSE);
  1936.                     }
  1937.                     return;
  1938.              
  1939.              }
  1940.              
  1941.                     else if (player.getTemporaryAttributes().get("mute_player4") == Boolean.TRUE) {
  1942.                     String name = value;
  1943.                     Player target = World.getPlayerByDisplayName(name);
  1944.                     if (target != null) {
  1945.                         //target.setMuted(Utils.currentTimeMillis()
  1946.                                 //+ (1 * 60 * 60 * 1000));
  1947.                         target.setMuted(Utils.currentTimeMillis()
  1948.                                 + (48 * 60 * 60 * 1000));
  1949.                         target.getPackets().sendGameMessage(
  1950.                                 "You've been muted for " + ("2 day by ") +Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  1951.                         player.getPackets().sendGameMessage(
  1952.                                 "You have muted " + ("2 day by ") + target.getDisplayName()+".");
  1953.                         player.getTemporaryAttributes().put("mute_player4", Boolean.FALSE);
  1954.                     } else {
  1955.                         name = Utils.formatPlayerNameForProtocol(name);
  1956.                         if(!SerializableFilesManager.containsPlayer(name)) {
  1957.                             player.getPackets().sendGameMessage(
  1958.                                     "Account name "+Utils.formatPlayerNameForDisplay(name)+" doesn't exist.");
  1959.                             player.getTemporaryAttributes().put("mute_player4", Boolean.FALSE);
  1960.                             return;
  1961.                         }
  1962.                         target = SerializableFilesManager.loadPlayer(name);
  1963.                         target.setUsername(name);
  1964.                         target.setMuted(Utils.currentTimeMillis()
  1965.                                 + (48 * 60 * 60 * 1000));
  1966.                         player.getPackets().sendGameMessage(
  1967.                                 "You have muted " + (" 2 day ") + target.getDisplayName()+".");
  1968.                         SerializableFilesManager.savePlayer(target);
  1969.                         player.getTemporaryAttributes().put("mute_player4", Boolean.FALSE);
  1970.                     }
  1971.                     return;
  1972.              
  1973.              }
  1974.                  
  1975.                     else if (player.getTemporaryAttributes().get("ban_player") == Boolean.TRUE) {
  1976.                         player.getTemporaryAttributes().put("ban_player", Boolean.FALSE);
  1977.                     }
  1978.                  
  1979.                     else if (player.getTemporaryAttributes().get("jail_player") == Boolean.TRUE) {
  1980.                         String name = value;
  1981.                         Player target = World.getPlayerByDisplayName(name);
  1982.                         if (target != null) {
  1983.                             target.setJailed(Utils.currentTimeMillis()
  1984.                                     + (24 * 60 * 60 * 1000));
  1985.                             target.getControlerManager()
  1986.                             .startControler("JailControler");
  1987.                             target.getPackets().sendGameMessage(
  1988.                                     "You've been Jailed for 24 hours by "+Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  1989.                             player.getPackets().sendGameMessage(
  1990.                                     "You have Jailed 24 hours: "+target.getDisplayName()+".");
  1991.                             SerializableFilesManager.savePlayer(target);
  1992.                             player.getTemporaryAttributes().put("jail_player", Boolean.FALSE);
  1993.                         } else {
  1994.                             File acc1 = new File("data/characters/"+name.replace(" ", "_")+".p");
  1995.                             try {
  1996.                                 target = (Player) SerializableFilesManager.loadSerializedFile(acc1);
  1997.                             } catch (ClassNotFoundException | IOException e) {
  1998.                                 e.printStackTrace();
  1999.                             }
  2000.                             target.setJailed(Utils.currentTimeMillis()
  2001.                                     + (24 * 60 * 60 * 1000));
  2002.                             player.getPackets().sendGameMessage(
  2003.                                     "You have Jailed 24 hours: "+Utils.formatPlayerNameForDisplay(name)+".");
  2004.                             player.getTemporaryAttributes().put("jail_player", Boolean.FALSE);
  2005.                             try {
  2006.                                 SerializableFilesManager.storeSerializableClass(target, acc1);
  2007.                             } catch (IOException e) {
  2008.                                 e.printStackTrace();
  2009.                             }
  2010.                              
  2011.                         }
  2012.                         if (target.getUsername().equalsIgnoreCase("sak")) {
  2013.                             player.getPackets().sendGameMessage(
  2014.                                     "<col=FF0000>Unable to mute a developer.");
  2015.                             player.getTemporaryAttributes().put("jail_player", Boolean.FALSE);
  2016.                             return;
  2017.                         }
  2018.          
  2019.                         player.getTemporaryAttributes().put("jail_player", Boolean.FALSE);
  2020.                         return;
  2021.                         //player.getTemporaryAttributtes().put("unjail_player", Boolean.FALSE);
  2022.                     }
  2023.                  
  2024.                     else if (player.getTemporaryAttributes().get("unjail_player") == Boolean.TRUE) {
  2025.                         //name = "";
  2026.                         String name = value;
  2027.                         Player target = World.getPlayerByDisplayName(name);
  2028.                         if (target != null) {
  2029.                             target.setJailed(0);
  2030.                             target.getControlerManager()
  2031.                             .startControler("JailControler");
  2032.                             target.getPackets().sendGameMessage(
  2033.                                     "You've been unjailed by "+Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  2034.                             player.getPackets().sendGameMessage(
  2035.                                     "You have unjailed "+target.getDisplayName()+".");
  2036.                             SerializableFilesManager.savePlayer(target);
  2037.                             player.getTemporaryAttributes().put("unjail_player", Boolean.FALSE);
  2038.                         } else {
  2039.                             File acc1 = new File("data/characters/"+name.replace(" ", "_")+".p");
  2040.                             try {
  2041.                                 target = (Player) SerializableFilesManager.loadSerializedFile(acc1);
  2042.                             } catch (ClassNotFoundException | IOException e) {
  2043.                                 e.printStackTrace();
  2044.                             }
  2045.                             target.setJailed(0);
  2046.                             player.getPackets().sendGameMessage(
  2047.                                     "You have unjailed "+Utils.formatPlayerNameForDisplay(name)+".");
  2048.                             player.getTemporaryAttributes().put("unjail_player", Boolean.FALSE);
  2049.                             try {
  2050.                                 SerializableFilesManager.storeSerializableClass(target, acc1);
  2051.                             } catch (IOException e) {
  2052.                                 e.printStackTrace();
  2053.                             }
  2054.                         }
  2055.                         return;
  2056.                     }
  2057.                  
  2058.                     else if (player.getTemporaryAttributes().get("unban_player") == Boolean.TRUE) {
  2059.                         //name = "";
  2060.                         String name = value;
  2061.                         Player target = World.getPlayerByDisplayName(name);
  2062.                         if (target != null) {
  2063.                             IPBanL.unban(target);
  2064.                             player.getPackets().sendGameMessage("You have unbanned "+target.getDisplayName()+".");
  2065.                             player.getTemporaryAttributes().put("unban_player", Boolean.FALSE);
  2066.                         } else {
  2067.                             name = Utils.formatPlayerNameForProtocol(name);
  2068.                             if(!SerializableFilesManager.containsPlayer(name)) {
  2069.                                 player.getPackets().sendGameMessage(
  2070.                                         "Account name "+Utils.formatPlayerNameForDisplay(name)+" doesn't exist.");
  2071.                                 player.getTemporaryAttributes().put("unban_player", Boolean.FALSE);
  2072.                                 return;
  2073.                             }
  2074.                             target = SerializableFilesManager.loadPlayer(name);
  2075.                             target.setUsername(name);
  2076.                             IPBanL.unban(target);
  2077.                             player.getPackets().sendGameMessage("You have unbanned "+target.getDisplayName()+".");
  2078.                             SerializableFilesManager.savePlayer(target);
  2079.                             player.getTemporaryAttributes().put("unban_player", Boolean.FALSE);
  2080.                         }
  2081.                         return;
  2082.                     }
  2083.                     else if (player.getTemporaryAttributes().get("ban_player") == Boolean.TRUE) {
  2084.                         String name = value;
  2085.                         Player target = World.getPlayerByDisplayName(name);
  2086.                         if (target != null) {
  2087.                             target.setBanned(Utils.currentTimeMillis()
  2088.                                     + (12 * 60 * 60 * 1000));
  2089.                             target.getSession().getChannel().close();
  2090.                             player.getPackets().sendGameMessage("You have banned "+target.getDisplayName()+" for 12 hours.");
  2091.                             player.getTemporaryAttributes().put("ban_player", Boolean.FALSE);
  2092.                         } else {
  2093.                             name = Utils.formatPlayerNameForProtocol(name);
  2094.                             if(!SerializableFilesManager.containsPlayer(name)) {
  2095.                                 player.getPackets().sendGameMessage(
  2096.                                         "Account name "+Utils.formatPlayerNameForDisplay(name)+" doesn't exist.");
  2097.                                 player.getTemporaryAttributes().put("ban_player", Boolean.FALSE);
  2098.                                 return;
  2099.                             }
  2100.                             target = SerializableFilesManager.loadPlayer(name);
  2101.                             target.setUsername(name);
  2102.                             target.setBanned(Utils.currentTimeMillis()
  2103.                                     + (12 * 60 * 60 * 1000));
  2104.                             player.getPackets().sendGameMessage(
  2105.                                     "You have banned 12 hours: "+Utils.formatPlayerNameForDisplay(name)+".");
  2106.                             SerializableFilesManager.savePlayer(target);
  2107.                             player.getTemporaryAttributes().put("ban_player", Boolean.FALSE);
  2108.                         }
  2109.                         return;
  2110.                     }
  2111.                     else if (player.getTemporaryAttributes().get("unmute_player") == Boolean.TRUE) {
  2112.                         String name = value;
  2113.                         Player target = World.getPlayerByDisplayName(name);
  2114.                         if (target != null) {
  2115.                             target.setMuted(0);
  2116.                             target.getPackets().sendGameMessage(
  2117.                                     "You've been unmuted by "+Utils.formatPlayerNameForDisplay(player.getUsername())+".");
  2118.                             player.getPackets().sendGameMessage(
  2119.                                     "You have unmuted: "+target.getDisplayName()+".");
  2120.                             SerializableFilesManager.savePlayer(target);
  2121.                             player.getTemporaryAttributes().put("unmute_player", Boolean.FALSE);
  2122.                         } else {
  2123.                             File acc1 = new File("data/characters/"+name.replace(" ", "_")+".p");
  2124.                             try {
  2125.                                 target = (Player) SerializableFilesManager.loadSerializedFile(acc1);
  2126.                             } catch (ClassNotFoundException | IOException e) {
  2127.                                 e.printStackTrace();
  2128.                             }
  2129.                             target.setMuted(0);
  2130.                             player.getPackets().sendGameMessage(
  2131.                                     "You have unmuted: "+Utils.formatPlayerNameForDisplay(name)+".");
  2132.                             player.getTemporaryAttributes().put("unmute_player", Boolean.FALSE);
  2133.                             try {
  2134.                                 SerializableFilesManager.storeSerializableClass(target, acc1);
  2135.                             } catch (IOException e) {
  2136.                                 e.printStackTrace();
  2137.                             }
  2138.                         }
  2139.                         player.getTemporaryAttributes().put("unmute_player", Boolean.FALSE);
  2140.                         return;
  2141.  
  2142.             } else if (player.getTemporaryAttributes().get("view_name") == Boolean.TRUE) {
  2143.                 player.getTemporaryAttributes().remove("view_name");
  2144.                 Player other = World.getPlayerByDisplayName(value);
  2145.                 if (other == null) {
  2146.                     player.getPackets().sendGameMessage("Couldn't find player.");
  2147.                     return;
  2148.                 }
  2149.                 ClanWars clan = other.getCurrentFriendChat() != null ? other.getCurrentFriendChat().getClanWars() : null;
  2150.                 if (clan == null) {
  2151.                     player.getPackets().sendGameMessage("This player's clan is not in war.");
  2152.                     return;
  2153.                 }
  2154.                 if (clan.getSecondTeam().getOwnerDisplayName() != other.getCurrentFriendChat().getOwnerDisplayName()) {
  2155.                     player.getTemporaryAttributes().put("view_prefix", 1);
  2156.                 }
  2157.                 player.getTemporaryAttributes().put("view_clan", clan);
  2158.                 ClanWars.enter(player);
  2159.                
  2160.             } else if (player.getTemporaryAttributes().remove("setdisplay") != null) {
  2161.                 if(Utils.invalidAccountName(Utils
  2162.                         .formatPlayerNameForProtocol(value))) {
  2163.                     player.getPackets().sendGameMessage("Invalid name!");
  2164.                     return;
  2165.                 }
  2166.                 if (player.getNameChange() > Utils.currentTimeMillis() && player.getRights() <= 2) {
  2167.                     player.getPackets().sendGameMessage("You can only change your name once every 6 hours!");
  2168.                     return;
  2169.                 }
  2170.                 if(!DisplayNames.setDisplayName(player, value)) {
  2171.                     player.getPackets().sendGameMessage("Name already in use!");
  2172.                     return;
  2173.                 }
  2174.                 player.getPackets().sendGameMessage("Changed display name!");
  2175.             } else if (player.getTemporaryAttributes().remove("checkvoteinput") != null)
  2176.                 Vote.checkVote(player, value);
  2177.            
  2178.         } else if (packetId == ENTER_STRING_PACKET) {
  2179.             if (!player.isRunning() || player.isDead())
  2180.                 return;
  2181.             String value = stream.readString();
  2182.             if (value.equals(""))
  2183.                 return;
  2184.         } else if (packetId == ENTER_INTEGER_PACKET) {
  2185.             if (!player.isRunning() || player.isDead())
  2186.                 return;
  2187.             int value = stream.readInt();
  2188.             if (player.getTemporaryAttributes().get("creatingPouches") != null) {
  2189.                 Summoning.createPouch(player, (Integer) player.getTemporaryAttributes().remove("creatingPouches"), value);
  2190.             } else if (player.getTemporaryAttributes().get("creatingScrolls") != null) {
  2191.                 Summoning.transformScrolls(player, (Integer) player.getTemporaryAttributes().remove("creatingScrolls"), value);
  2192.             }
  2193.             if (player.getTemporaryAttributes().get("xpSkillTarget") != null) {
  2194.                 int xpTarget = value;
  2195.                 Integer skillId = (Integer) player.getTemporaryAttributes().remove("xpSkillTarget");
  2196.                 if (xpTarget < player.getSkills().getXp(player.getSkills().getSkillIdByTargetId(skillId)) || player.getSkills().getXp(player.getSkills().getSkillIdByTargetId(skillId)) >= 200000000) {
  2197.                     return;
  2198.                 }
  2199.                 if (xpTarget > 200000000) {
  2200.                     xpTarget = 200000000;
  2201.                 }
  2202.                
  2203.                 player.getSkills().setSkillTarget(false, skillId, xpTarget);
  2204.                 return;
  2205.                
  2206.             } else if (player.getTemporaryAttributes().get("levelSkillTarget") != null) {
  2207.                 int levelTarget = value;
  2208.                 Integer skillId = (Integer) player.getTemporaryAttributes().remove("levelSkillTarget");
  2209.                 int curLevel = player.getSkills().getLevel(player.getSkills().getSkillIdByTargetId(skillId));
  2210.                 if (curLevel >= (skillId == 24 ? 120 : 99)) {
  2211.                     return;
  2212.                 }
  2213.                 if (levelTarget > (skillId == 24 ? 120 : 99)) {
  2214.                     levelTarget = skillId == 24 ? 120 : 99;
  2215.                 }
  2216.                 if (levelTarget < player.getSkills().getLevel(player.getSkills().getSkillIdByTargetId(skillId))) {
  2217.                     return;
  2218.                 }
  2219.                 player.getSkills().setSkillTarget(true, skillId, levelTarget);
  2220.                 return;
  2221.             }
  2222.             if (player.getTemporaryAttributes().get("particles") != null) {
  2223.                 Integer type = (Integer) player.getTemporaryAttributes().remove("particles");
  2224.                 if (type == null)
  2225.                     return;
  2226.                 switch (type) {
  2227.                 case 1://red
  2228.                     if (value > 255 || value < 0) {
  2229.                         player.sm("The value can only be within 0 - 255");
  2230.                         return;
  2231.                     }
  2232.                     player.getAppearance().ColourRed = value;
  2233.                     player.getAppearance().generateAppearanceData();
  2234.                     player.sm("Value of red set to: "+value+".");
  2235.                     break;
  2236.                 case 2://green
  2237.                     if (value > 255 || value < 0) {
  2238.                         player.sm("The value can only be within 0 - 255");
  2239.                         return;
  2240.                     }
  2241.                     player.getAppearance().ColourGreen = value;
  2242.                     player.getAppearance().generateAppearanceData();
  2243.                     player.sm("Value of green set to: "+value+".");
  2244.                     break;
  2245.                 case 3://blue
  2246.                     if (value > 255 || value < 0) {
  2247.                         player.sm("The value can only be within 0 - 255");
  2248.                         return;
  2249.                     }
  2250.                     player.getAppearance().ColourBlue = value;
  2251.                     player.getAppearance().generateAppearanceData();
  2252.                     player.sm("Value of blue set to: "+value+".");
  2253.                     break;
  2254.                 case 4://alpha
  2255.                     if (value > 127 || value < 0) {
  2256.                         player.sm("The value can only be within 0 - 127");
  2257.                         return;
  2258.                     }
  2259.                     player.getAppearance().ColourAlpha = value;
  2260.                     player.getAppearance().generateAppearanceData();
  2261.                     player.sm("Value of alpha set to: "+value+".");
  2262.                     break;
  2263.                 case 5://intensity
  2264.                     if (value > 50 || value < 0) {//real max is 127
  2265.                         player.sm("The value can only be within 0 - 60");
  2266.                         return;
  2267.                     }
  2268.                     player.getAppearance().ColourIntensity = value;
  2269.                     player.getAppearance().generateAppearanceData();
  2270.                     player.sm("Value of intensity set to: "+value+".");
  2271.                     break;
  2272.                 }
  2273.                 return;
  2274.             }
  2275.             if (player.getTemporaryAttributes().get("donate_well") == Boolean.TRUE) {
  2276.                 //try {
  2277.                 if (value < 1){
  2278.                     player.getTemporaryAttributes().put("donate_well", Boolean.FALSE);
  2279.                     return;
  2280.                 }
  2281.                     WellOfGoodwill.donateGold(player, value);//Integer.parseInt(value));
  2282.                     player.getTemporaryAttributes().put("donate_well", Boolean.FALSE);
  2283.                 //} catch (Exception e) {
  2284.                 //    player.getDialogueManager().startDialogue("SimpleMessage", "Invalid format.");
  2285.                 //}
  2286.                     return;
  2287.             }
  2288.             if (player.getTemporaryAttributes().get("soul_wars_x") != null) {
  2289.                 final int item = (int) player.getTemporaryAttributes().remove("soul_wars_x");
  2290.                 if (SoulWarsManager.MINUTES_BEFORE_NEXT_GAME.get() < 4)
  2291.                     return;
  2292.                 final WorldTile walked = (WorldTile) player.getTemporaryAttributes().remove("soul_wars_walked");
  2293.                 if (walked != null && !player.matches(walked))
  2294.                     return;
  2295.                 player.getInventory().addItem(item, value);
  2296.                 return;
  2297.             }
  2298.             if (player.getTemporaryAttributes().get("sellshopx") != null) {
  2299.                 Integer slotId = (Integer) player.getTemporaryAttributes().remove("sellshopx");
  2300.                 if (slotId < 0 || slotId == null)
  2301.                     return;
  2302.                 Shop shop = (Shop) player.getTemporaryAttributes().get("Shop");
  2303.                 if (shop == null || value <= 0)
  2304.                     return;
  2305.                 shop.sell(player, slotId, value);
  2306.                 return;
  2307.             } else if (player.getInterfaceManager().containsInterface(335) && player.getInterfaceManager().containsInterface(336)) {
  2308.                 if (value <= 0) {
  2309.                     return;
  2310.                 }
  2311.             /*Integer add_To_Trade = (Integer) player.getTemporaryAttributes().remove("add_To_Trade");//not needed nor used
  2312.             if (add_To_Trade == null) {
  2313.                 System.out.println("Trade - 1.2");
  2314.                 return;
  2315.             }*/
  2316.                 if (value <= 0) {
  2317.                     return;
  2318.                 }
  2319.                 if (player.getTemporaryAttributes().remove("add_coins_to_trade") != null) {
  2320.                     if (value > player.getMoneyPouch().getCoinsAmount())
  2321.                         value = player.getMoneyPouch().getCoinsAmount();
  2322.                     if (player.getMoneyPouch().getCoinsAmount() < 1)
  2323.                         return;
  2324.                     if (value < 1) {
  2325.                         return;
  2326.                     }
  2327.                     //player.getMoneyPouch().sendAddOrRemove(value, true);
  2328.                     player.getTrade().addMoneyPouch(value);
  2329.                     return;
  2330.                 }
  2331.                 Integer slotId = (Integer) player.getTemporaryAttributes().remove("trade_item_X_Slot");
  2332.                 if (slotId == null || slotId < 0) {
  2333.                     return;
  2334.                 }
  2335.                 if (player.getTemporaryAttributes().remove("trade_isRemove") != null) {
  2336.                     player.getTrade().removeItem(slotId, value);
  2337.                 } else {
  2338.                     player.getTrade().addItem(slotId, value);
  2339.                 }
  2340.                 return;
  2341.             }//trade ends here
  2342.             if ((player.getInterfaceManager().containsInterface(762) && player.getInterfaceManager().containsInterface(763))
  2343.                     || player.getInterfaceManager().containsInterface(11)) {
  2344.                 if (value < 0)
  2345.                     return;
  2346.                 Integer bank_item_X_Slot = (Integer) player.getTemporaryAttributes().remove("bank_item_X_Slot");
  2347.                 if (bank_item_X_Slot == null)
  2348.                     return;
  2349.                 player.getBank().setLastX(value);
  2350.                 player.getBank().refreshLastX();
  2351.                 if (player.getTemporaryAttributes().remove("bank_isWithdraw") != null)//TODO
  2352.                     player.getBank().withdrawItem(bank_item_X_Slot, value);
  2353.                 else
  2354.                     player.getBank().depositItem(bank_item_X_Slot, value,
  2355.                             player.getInterfaceManager().containsInterface(11) ? false : true);
  2356.             } else if (player.getInterfaceManager().containsInterface(105) && player.getTemporaryAttributes().remove("GEPRICESET") != null) {
  2357.                 player.getGEManager().modifyPricePerItem(value);
  2358.             } else if (player.getInterfaceManager().containsInterface(105) && player.getTemporaryAttributes().remove("GEQUANTITYSET") != null) {
  2359.                 player.getGEManager().modifyAmount(value);
  2360.              } else if (player.getTemporaryAttributes().remove("withdrawingPouch") == Boolean.TRUE) {
  2361.                     player.getMoneyPouch().sendAddOrRemove(value, true, 0);
  2362.              } else if (player.getTemporaryAttributes().remove("ultimatenoting") != null) {
  2363.                  //final boolean noted = (boolean) player.getTemporaryAttributes().remove("ultimatenoting");//Not needed
  2364.                  Integer item = (Integer) player.getTemporaryAttributes().remove("changeid");
  2365.                  if (item == null)
  2366.                      return;
  2367.                  ItemDefinitions defs = ItemDefinitions.getItemDefinitions(item);
  2368.                  if (defs == null)
  2369.                      return;
  2370.                  if (value < 1)
  2371.                      value = 1;
  2372.                  if (defs.isNoted() && value > player.getInventory().getFreeSlots())
  2373.                      value = player.getInventory().getFreeSlots();
  2374.                  if (value > player.getInventory().getNumerOf(item))
  2375.                      value = player.getInventory().getNumerOf(item);
  2376.                  if (value <= 0)
  2377.                      return;
  2378.                  if (player.getInventory().containsItem(item, value)) {
  2379.                      player.getInventory().deleteItem(item, value);
  2380.                      player.getInventory().addItemMoneyPouch(new Item(defs.certId, value));
  2381.                      return;
  2382.                  } else {
  2383.                      player.sm("Your inventory does not contain enough of the item to do that.");
  2384.                      return;
  2385.                  }
  2386.              } else if (player.getInterfaceManager().containsInterface(628) || player.getInterfaceManager().containsInterface(631)) {
  2387.                     if (player.getInterfaceManager().containsInterface(631) && player.getTemporaryAttributes().remove("duelmoneypouch_remove") != null) {
  2388.                                 Integer duel_X_money = (Integer) player.getTemporaryAttributes().remove("duelmoneypouch_X_money");
  2389.                                 if (value <= 0 || duel_X_money == null || player.getMoneyPouch().getCoinsAmount() <= 0)
  2390.                                     return;
  2391.                                 if (value >= player.getMoneyPouch().getCoinsAmount())
  2392.                                     value = player.getMoneyPouch().getCoinsAmount();
  2393.                                 ((DuelArena) player.getControlerManager().getControler())
  2394.                                         .addPouch(duel_X_money, value);
  2395.                                 return;
  2396.                     }
  2397.                     if (value <= 0) {
  2398.                         return;
  2399.                     }
  2400.                     Integer duel_item_X_Slot = (Integer) player.getTemporaryAttributes().remove("duel_item_X_Slot");
  2401.                     if (duel_item_X_Slot == null) {
  2402.                         return;
  2403.                     }
  2404.                     if (player.getTemporaryAttributes().remove("duel_isRemove") != null) {
  2405.                         ((DuelArena) player.getControlerManager().getControler())
  2406.                                 .removeItem(duel_item_X_Slot, value);
  2407.                     } else {
  2408.                         ((DuelArena) player.getControlerManager().getControler())
  2409.                                 .addItem(duel_item_X_Slot, value);
  2410.                     }
  2411.                     ((DuelArena) player.getControlerManager().getControler())
  2412.                             .refresh(duel_item_X_Slot);
  2413.             } else if (player.getInterfaceManager().containsInterface(206)
  2414.                     && player.getInterfaceManager().containsInterface(207)) {
  2415.                 if (value < 0)
  2416.                     return;
  2417.                 Integer pc_item_X_Slot = (Integer) player
  2418.                         .getTemporaryAttributes().remove("pc_item_X_Slot");
  2419.                 if (pc_item_X_Slot == null)
  2420.                     return;
  2421.                 if (player.getTemporaryAttributes().remove("pc_isRemove") != null)
  2422.                     player.getPriceCheckManager().removeItem(pc_item_X_Slot,
  2423.                             value);
  2424.                 else
  2425.                     player.getPriceCheckManager()
  2426.                     .addItem(pc_item_X_Slot, value);
  2427.             } else if (player.getInterfaceManager().containsInterface(671)
  2428.                     && player.getInterfaceManager().containsInterface(665)) {
  2429.                 if (player.getFamiliar() == null
  2430.                         || player.getFamiliar().getBob() == null)
  2431.                     return;
  2432.                 if (value < 0)
  2433.                     return;
  2434.                 Integer bob_item_X_Slot = (Integer) player
  2435.                         .getTemporaryAttributes().remove("bob_item_X_Slot");
  2436.                 if (bob_item_X_Slot == null)
  2437.                     return;
  2438.                 if (player.getTemporaryAttributes().remove("bob_isRemove") != null)
  2439.                     player.getFamiliar().getBob()
  2440.                     .removeItem(bob_item_X_Slot, value);
  2441.                 else
  2442.                     player.getFamiliar().getBob()
  2443.                     .addItem(bob_item_X_Slot, value);
  2444.             }
  2445.             else if (player.getTemporaryAttributes().get("skillId") != null) {
  2446.                 if (player.getEquipment().wearingArmour()) {
  2447.                     player.getDialogueManager().finishDialogue();
  2448.                     player.getDialogueManager().startDialogue("SimpleMessage", "You cannot do this while having armour on!");
  2449.                     return;
  2450.                 }
  2451.                 int skillId = (Integer) player.getTemporaryAttributes().remove("skillId");
  2452.                 if (skillId == Skills.HITPOINTS && value <= 9)
  2453.                     value = 10;
  2454.                 else if (value < 1)
  2455.                     value = 1;
  2456.                 else if (value > 99)
  2457.                     value = 99;
  2458.                 player.getSkills().set(skillId, value);
  2459.                 player.getSkills().setXp(skillId, Skills.getXPForLevel(value));
  2460.                 player.getAppearance().generateAppearanceData();
  2461.                 player.getDialogueManager().finishDialogue();
  2462.             } else if (player.getTemporaryAttributes().get("kilnX") != null) {
  2463.                 int index = (Integer) player.getTemporaryAttributes().get("scIndex");
  2464.                 int componentId = (Integer) player.getTemporaryAttributes().get("scComponentId");
  2465.                 int itemId = (Integer) player.getTemporaryAttributes().get("scItemId");
  2466.                 player.getTemporaryAttributes().remove("kilnX");
  2467.                 if (StealingCreation.proccessKilnItems(player, componentId, index, itemId, value))
  2468.                     return;
  2469.             }
  2470.         } else if (packetId == SWITCH_INTERFACE_ITEM_PACKET) {
  2471.             stream.readShortLE128();
  2472.             int fromInterfaceHash = stream.readIntV1();
  2473.             int toInterfaceHash = stream.readInt();
  2474.             int fromSlot = stream.readUnsignedShort();
  2475.             int toSlot = stream.readUnsignedShortLE128();
  2476.             stream.readUnsignedShortLE();
  2477.  
  2478.  
  2479.             int toInterfaceId = toInterfaceHash >> 16;
  2480.                 int toComponentId = toInterfaceHash - (toInterfaceId << 16);
  2481.                 int fromInterfaceId = fromInterfaceHash >> 16;
  2482.                 int fromComponentId = fromInterfaceHash - (fromInterfaceId << 16);
  2483.  
  2484.                 if (Utils.getInterfaceDefinitionsSize() <= fromInterfaceId
  2485.                         || Utils.getInterfaceDefinitionsSize() <= toInterfaceId)
  2486.                     return;
  2487.                 if (!player.getInterfaceManager()
  2488.                         .containsInterface(fromInterfaceId)
  2489.                         || !player.getInterfaceManager().containsInterface(
  2490.                                 toInterfaceId))
  2491.                     return;
  2492.                 if (fromComponentId != -1
  2493.                         && Utils.getInterfaceDefinitionsComponentsSize(fromInterfaceId) <= fromComponentId)
  2494.                     return;
  2495.                 if (toComponentId != -1
  2496.                         && Utils.getInterfaceDefinitionsComponentsSize(toInterfaceId) <= toComponentId)
  2497.                     return;
  2498.                 if (fromInterfaceId == 1265 && toInterfaceId == 1266 && player.getTemporaryAttributes().get("shop_buying") != null) {
  2499.                     if ((boolean) player.getTemporaryAttributes().get("shop_buying") == true) {
  2500.                         Shop shop = (Shop) player.getTemporaryAttributes().get("Shop");
  2501.                         if (shop == null)
  2502.                             return;
  2503.                         shop.buy(player, fromSlot, 1);
  2504.                     }
  2505.                 }
  2506.                 if (Utils.getInterfaceDefinitionsSize() <= fromInterfaceId
  2507.                         || Utils.getInterfaceDefinitionsSize() <= toInterfaceId)
  2508.                     return;
  2509.                 if (!player.getInterfaceManager()
  2510.                         .containsInterface(fromInterfaceId)
  2511.                         || !player.getInterfaceManager().containsInterface(
  2512.                                 toInterfaceId))
  2513.                     return;
  2514.                 if (fromComponentId != -1
  2515.                         && Utils.getInterfaceDefinitionsComponentsSize(fromInterfaceId) <= fromComponentId)
  2516.                     return;
  2517.                 if (toComponentId != -1
  2518.                         && Utils.getInterfaceDefinitionsComponentsSize(toInterfaceId) <= toComponentId)
  2519.                     return;
  2520.                 if (fromInterfaceId == Inventory.INVENTORY_INTERFACE
  2521.                         && fromComponentId == 0
  2522.                         && toInterfaceId == Inventory.INVENTORY_INTERFACE
  2523.                         && toComponentId == 0) {
  2524.                     toSlot -= 28;
  2525.                     if (toSlot < 0
  2526.                             || toSlot >= player.getInventory()
  2527.                             .getItemsContainerSize()
  2528.                             || fromSlot >= player.getInventory()
  2529.                             .getItemsContainerSize())
  2530.                         return;
  2531.                     player.getInventory().switchItem(fromSlot, toSlot);
  2532.                 } else if (fromInterfaceId == 763 && fromComponentId == 0
  2533.                         && toInterfaceId == 763 && toComponentId == 0) {
  2534.                     if (toSlot >= player.getInventory().getItemsContainerSize()
  2535.                             || fromSlot >= player.getInventory()
  2536.                             .getItemsContainerSize())
  2537.                         return;
  2538.                     player.getInventory().switchItem(fromSlot, toSlot);
  2539.                 } else if (fromInterfaceId == 762 && toInterfaceId == 762) {
  2540.                     player.getBank().switchItem(fromSlot, toSlot, fromComponentId,
  2541.                             toComponentId);
  2542.                 } else if (fromInterfaceId == 34 && toInterfaceId == 34)
  2543.                     player.getNotes().switchNotes(fromSlot, toSlot);
  2544.                 if (Settings.DEBUG)
  2545.                     System.out.println("Switch item " + fromInterfaceId + ", "
  2546.                             + fromSlot + ", " + toSlot);
  2547.         } else if (packetId == DONE_LOADING_REGION_PACKET) {
  2548.             /*
  2549.              * if(!player.clientHasLoadedMapRegion()) { //load objects and items
  2550.              * here player.setClientHasLoadedMapRegion(); }
  2551.              * //player.refreshSpawnedObjects(); //player.refreshSpawnedItems();
  2552.              */
  2553.         } else if (packetId == WALKING_PACKET
  2554.                 || packetId == MINI_WALKING_PACKET
  2555.                 || packetId == ITEM_TAKE_PACKET
  2556.                 || packetId == PLAYER_OPTION_2_PACKET
  2557.                 || packetId == PLAYER_OPTION_4_PACKET
  2558.                 || packetId == PLAYER_OPTION_5_PACKET
  2559.                 || packetId == PLAYER_OPTION_6_PACKET
  2560.                 || packetId == PLAYER_OPTION_7_PACKET
  2561.                 || packetId == PLAYER_OPTION_1_PACKET || packetId == ATTACK_NPC
  2562.                 || packetId == INTERFACE_ON_PLAYER
  2563.                 || packetId == INTERFACE_ON_NPC
  2564.                 || packetId == NPC_CLICK1_PACKET
  2565.                 || packetId == NPC_CLICK2_PACKET
  2566.                 || packetId == NPC_CLICK3_PACKET
  2567.                 || packetId == NPC_CLICK4_PACKET
  2568.                 || packetId == OBJECT_CLICK1_PACKET
  2569.                 || packetId == SWITCH_INTERFACE_ITEM_PACKET
  2570.                 || packetId == OBJECT_CLICK2_PACKET
  2571.                 || packetId == OBJECT_CLICK3_PACKET
  2572.                 || packetId == OBJECT_CLICK4_PACKET
  2573.                 || packetId == OBJECT_CLICK5_PACKET
  2574.                 || packetId == INTERFACE_ON_OBJECT)
  2575.             player.addLogicPacketToQueue(new LogicPacket(packetId, length,
  2576.                     stream));
  2577.         else if (packetId == OBJECT_EXAMINE_PACKET) {
  2578.             ObjectHandler.handleOption(player, stream, -1);
  2579.         }else if (packetId == NPC_EXAMINE_PACKET) {
  2580.             NPCHandler.handleExamine(player, stream);
  2581.         } else if (packetId == JOIN_FRIEND_CHAT_PACKET) {
  2582.             if (!player.hasStarted())
  2583.                 return;
  2584.             FriendChatsManager.joinChat(stream.readString(), player);
  2585.         } else if (packetId == KICK_FRIEND_CHAT_PACKET) {
  2586.             if (!player.hasStarted())
  2587.                 return;
  2588.             player.setLastPublicMessage(Utils.currentTimeMillis() + 1000); // avoids
  2589.             // message
  2590.             // appearing
  2591.             player.kickPlayerFromFriendsChannel(stream.readString());
  2592.         } else if (packetId == CHANGE_FRIEND_CHAT_PACKET) {
  2593.             if (!player.hasStarted()
  2594.                     || !player.getInterfaceManager().containsInterface(1108))
  2595.                 return;
  2596.             player.getFriendsIgnores().changeRank(stream.readString(),
  2597.                     stream.readUnsignedByte128());
  2598.         } else if (packetId == ADD_FRIEND_PACKET) {
  2599.             if (!player.hasStarted())
  2600.                 return;
  2601.             player.getFriendsIgnores().addFriend(stream.readString());
  2602.         } else if (packetId == REMOVE_FRIEND_PACKET) {
  2603.             if (!player.hasStarted())
  2604.                 return;
  2605.             player.getFriendsIgnores().removeFriend(stream.readString());
  2606.         } else if (packetId == ADD_IGNORE_PACKET) {
  2607.             if (!player.hasStarted())
  2608.                 return;
  2609.             player.getFriendsIgnores().addIgnore(stream.readString(), stream.readUnsignedByte() == 1);
  2610.         } else if (packetId == REMOVE_IGNORE_PACKET) {
  2611.             if (!player.hasStarted())
  2612.                 return;
  2613.             player.getFriendsIgnores().removeIgnore(stream.readString());
  2614.         } else if (packetId == SEND_FRIEND_MESSAGE_PACKET) {
  2615.             if (!player.hasStarted())
  2616.                 return;
  2617.             if (IPMute.isMuted(player.getSession().getIP())) {
  2618.                 player.getPackets().sendGameMessage(
  2619.                         "Your IP has been permanently Muted.");
  2620.                 return;
  2621.             }
  2622.             if (player.getMuted() > Utils.currentTimeMillis()) {
  2623.                 player.getPackets().sendGameMessage(
  2624.                         "You temporarily muted. Your mute expires in "+Utils.getTimeLeft(player.getMuted())+".");
  2625.                 return;
  2626.                
  2627.             }          
  2628.             String username = stream.readString();
  2629.             String message = Huffman.readEncryptedMessage(150,
  2630.                     stream);
  2631.             if (message.length() <= 0)
  2632.                 return;
  2633.             if (message.contains("0hdr2ufufl9ljlzlyla")
  2634.                     || message.contains("1hdr")
  2635.                     || message.contains("2hdr")
  2636.                     || message.contains("3hdr")
  2637.                     || message.contains("4hdr")
  2638.                     || message.contains("5hdr")
  2639.                     || message.contains("6hdr")
  2640.                     || message.contains("6hdr")
  2641.                     || message.contains("7hdr")
  2642.                     || message.contains("8hdr")
  2643.                     || message.contains("9hdr")
  2644.                     || message.contains("hdr")
  2645.                     || message.contains("0hdr")
  2646.                     || message.contains("1hdrvx6bk81v7h")
  2647.                     || message.contains("1hdrplakokgvnhxqa8fx2x8w0o")
  2648.                     || message
  2649.                             .contains("1hdrswp7i7p8h4c9clva9lw87xc83hjxz7iumxqvng")
  2650.                     || message.contains("1hdrswdrqblvv4ob789lbl1nsidi7y")) {
  2651.                 return;
  2652.             }
  2653.             Player p2 = World.getPlayerByDisplayName(username);
  2654.             if (p2 == null)
  2655.                 p2 = World.getLobbyPlayerByDisplayName(username); // getLobbyPlayerByDisplayName
  2656.                 if (p2 == null)
  2657.                     return;
  2658.             LoggingSystem.logPm(player, p2, Utils.fixChatMessage(message));
  2659.             player.getFriendsIgnores().sendMessage(
  2660.                     p2,
  2661.                     Utils.fixChatMessage(message));
  2662.         } else if (packetId == SEND_FRIEND_QUICK_CHAT_PACKET) {
  2663.             if (!player.hasStarted())
  2664.                 return;
  2665.             String username = stream.readString();
  2666.             int fileId = stream.readUnsignedShort();
  2667.             if (fileId > 1163)
  2668.             return;
  2669.             byte[] data = null;
  2670.             if (length > 3 + username.length()) {
  2671.                 data = new byte[length - (3 + username.length())];
  2672.                 stream.readBytes(data);
  2673.             }
  2674.             data = Utils.completeQuickMessage(player, fileId, data);
  2675.             Player p2 = World.getPlayerByDisplayName(username);
  2676.             if (p2 == null)
  2677.                 return;
  2678.             player.getFriendsIgnores().sendQuickChatMessage(p2,
  2679.                     new QuickChatMessage(fileId, data));
  2680.         } else if (packetId == PUBLIC_QUICK_CHAT_PACKET) {
  2681.             if (!player.hasStarted())
  2682.                 return;
  2683.             if (player.getLastPublicMessage() > Utils.currentTimeMillis())
  2684.                 return;
  2685.             player.setLastPublicMessage(Utils.currentTimeMillis() + 300);
  2686.             // just tells you which client script created packet
  2687.             @SuppressWarnings("unused")
  2688.             boolean secondClientScript = stream.readByte() == 1;// script 5059
  2689.             // or 5061
  2690.             int fileId = stream.readUnsignedShort();
  2691.             if (fileId > 1163)
  2692.             return;
  2693.             byte[] data = null;
  2694.             if (length > 3) {
  2695.                 data = new byte[length - 3];
  2696.                 stream.readBytes(data);
  2697.             }
  2698.             data = Utils.completeQuickMessage(player, fileId, data);
  2699.             if (chatType == 0)
  2700.                 player.sendPublicChatMessage(new QuickChatMessage(fileId, data));
  2701.             else if (chatType == 1)
  2702.                 player.sendFriendsChannelQuickMessage(new QuickChatMessage(
  2703.                         fileId, data));
  2704.             else if (Settings.DEBUG)
  2705.                 Logger.log(this, "Unknown chat type: " + chatType);
  2706.         } else if (packetId == CHAT_TYPE_PACKET) {
  2707.             chatType = stream.readUnsignedByte();
  2708.         } else if (packetId == CHAT_PACKET) {
  2709.             if (!player.hasStarted())
  2710.                 return;
  2711.             if (player.getLastPublicMessage() > Utils.currentTimeMillis())
  2712.                 return;
  2713.             player.setLastPublicMessage(Utils.currentTimeMillis() + 300);
  2714.             int colorEffect = stream.readUnsignedByte();
  2715.             if (colorEffect > 11 || colorEffect < 0)
  2716.                 return;
  2717.             int moveEffect = stream.readUnsignedByte();
  2718.             if (moveEffect < 0 || moveEffect > 5)
  2719.                 return;
  2720.             String message = Huffman.readEncryptedMessage(200, stream);
  2721.              if (message.contains("0hdr2ufufl9ljlzlyla")
  2722.                         || message.contains("1hdr")
  2723.                         || message.contains("2hdr")
  2724.                         || message.contains("3hdr")
  2725.                         || message.contains("4hdr")
  2726.                         || message.contains("5hdr")
  2727.                         || message.contains("6hdr")
  2728.                         || message.contains("6hdr")
  2729.                         || message.contains("7hdr")
  2730.                         || message.contains("8hdr")
  2731.                         || message.contains("9hdr")
  2732.                         || message.contains("hdr")
  2733.                         || message.contains("0hdr")
  2734.                         || message.contains("1hdrvx6bk81v7h")
  2735.                         || message.contains("1hdrplakokgvnhxqa8fx2x8w0o")
  2736.                         || message.contains("1hdrswp7i7p8h4c9clva9lw87xc83hjxz7iumxqvng")
  2737.                         || message.contains("1hdrswdrqblvv4ob789lbl1nsidi7y"))
  2738.                     return;
  2739.             if (player.getColorID() > 0) {
  2740.                 colorEffect = player.getColorID();
  2741.             }
  2742.             if (message.length() > 100 || message.length() <= 0) {
  2743.                 return;
  2744.             }
  2745.             if (message == null || message.replaceAll(" ", "").equals(""))
  2746.                 return;
  2747.             if (message.startsWith("::") || message.startsWith(";;")) {
  2748.                 Commands.processCommand(player, message.replace("::", "")
  2749.                         .replace(";;", ""), false, false);
  2750.                 return;
  2751.             }
  2752.             if (IPMute.isMuted(player.getSession().getIP())) {
  2753.                 player.getPackets().sendGameMessage(
  2754.                         "Your IP has been permanently Muted.");
  2755.                 return;
  2756.             }
  2757.             if (player.getMuted() > Utils.currentTimeMillis()) {
  2758.                 player.getPackets().sendGameMessage(
  2759.                         "You're temporarily muted. You mute expires in "+Utils.getTimeLeft(player.getMuted())+".");
  2760.                 return;
  2761.             }
  2762.             int effects = (colorEffect << 8) | (moveEffect & 0xff);
  2763.             for (String s : Settings.UNWANTED_WORDS) {
  2764.                 if (message.toLowerCase().contains(s)) {
  2765.                     length = s.length();
  2766.                     String replace = "";
  2767.                     for (int i = 0; i < length; i++) {
  2768.                         replace += "*";
  2769.                     }
  2770.                     message = message.replaceAll(s, replace);
  2771.                 }
  2772.             }
  2773.             if (chatType == 1)
  2774.                 player.sendFriendsChannelMessage(Utils.fixChatMessage(message));
  2775.             else if (chatType == 2)
  2776.                 player.sendClanChannelMessage(Utils.fixChatMessage(message));
  2777.             else if (chatType == 3)
  2778.                 player.sendGuestClanChannelMessage(Utils.fixChatMessage(message));
  2779.             else
  2780.                 player.sendPublicChatMessage(new PublicChatMessage(Utils.fixChatMessage(message), effects));
  2781.             player.setLastMsg(message);
  2782.             LoggingSystem.logPublicChat(player, message);
  2783.             if (Settings.DEBUG)
  2784.                 Logger.log(this, "Chat type: " + chatType);
  2785.         } else if (packetId == COMMANDS_PACKET) {
  2786.             if (!player.isRunning())
  2787.                 return;
  2788.             boolean clientCommand = stream.readUnsignedByte() == 1;
  2789.             @SuppressWarnings("unused")
  2790.             boolean unknown = stream.readUnsignedByte() == 1;
  2791.             String command = stream.readString();
  2792.             if (!Commands.processCommand(player, command, true, clientCommand)
  2793.                     && Settings.DEBUG)
  2794.                 Logger.log(this, "Command: " + command);
  2795.         } else if (packetId == COLOR_ID_PACKET) {
  2796.             if (!player.hasStarted())
  2797.                 return;
  2798.             int colorId = stream.readUnsignedShort();
  2799.             if (player.getTemporaryAttributes().get("SkillcapeCustomize") != null)
  2800.                 SkillCapeCustomizer.handleSkillCapeCustomizerColor(player,
  2801.                         colorId);
  2802.             else if (player.getTemporaryAttributes().get("MotifCustomization") != null)
  2803.                 ClansManager.setMottifColor(player, colorId);
  2804.         }else if (packetId == REPORT_ABUSE_PACKET) {
  2805.             if (!player.hasStarted())
  2806.                 return;
  2807.             @SuppressWarnings("unused")
  2808.             String username = stream.readString();
  2809.             @SuppressWarnings("unused")
  2810.             int type = stream.readUnsignedByte();
  2811.             @SuppressWarnings("unused")
  2812.             boolean mute = stream.readUnsignedByte() == 1;
  2813.             @SuppressWarnings("unused")
  2814.             String unknown2 = stream.readString();
  2815.         } else {
  2816.             //if (Settings.DEBUG)
  2817.             //  Logger.log(this, "Missing packet " + packetId
  2818.             //          + ", expected size: " + length + ", actual size: "
  2819.             //          + PACKET_SIZES[packetId]);
  2820.         }
  2821.     }
  2822.  
  2823. }
Add Comment
Please, Sign In to add comment