Thread: 727 Player Options

Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 21
  1. #11  
    Registered Member
    Join Date
    Feb 2017
    Age
    26
    Posts
    53
    Thanks given
    3
    Thanks received
    4
    Rep Power
    11
    player options packets outgoing

    Class119.java
    Code:
    if (1 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_1_PACKET;
    				else if (4 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_4_PACKET;
    				else if (i == 5)
    					class379 = OutgoingPacket.PLAYER_OPTION_5_PACKET;
    				else if (6 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_6_PACKET;
    				else if (i == 7)
    					class379 = OutgoingPacket.PLAYER_OPTION_7_PACKET;
    				else if (i == 9)
    					class379 = OutgoingPacket.PLAYER_OPTION_9_PACKET;
    Class20.java
    Code:
     
    method641
    
    if (i_240_ == 44)
    				class379 = OutgoingPacket.PLAYER_OPTION_1_PACKET;
    			else if (45 == i_240_)
    				class379 = OutgoingPacket.PLAYER_OPTION_2_PACKET;
    			else if (46 == i_240_)
    				class379 = OutgoingPacket.PLAYER_OPTION_3_PACKET;
    			else if (i_240_ == 47)
    				class379 = OutgoingPacket.PLAYER_OPTION_4_PACKET;
    			else if (48 == i_240_)
    				class379 = OutgoingPacket.PLAYER_OPTION_5_PACKET;
    			else if (i_240_ == 49)
    				class379 = OutgoingPacket.PLAYER_OPTION_6_PACKET;
    			else if (i_240_ == 50)
    				class379 = OutgoingPacket.PLAYER_OPTION_7_PACKET;
    			else if (51 == i_240_)
    				class379 = OutgoingPacket.PLAYER_OPTION_8_PACKET;
    			else if (i_240_ == 52)
    				class379 = OutgoingPacket.PLAYER_OPTION_9_PACKET;
    			else if (i_240_ == 53)
    				class379 = OutgoingPacket.PLAYER_OPTION_10_PACKET;
    
    method734
    
    if (i_515_ == 44)
    				class379 = OutgoingPacket.PLAYER_OPTION_1_PACKET;
    			else if (45 == i_515_)
    				class379 = OutgoingPacket.PLAYER_OPTION_2_PACKET;
    			else if (46 == i_515_)
    				class379 = OutgoingPacket.PLAYER_OPTION_3_PACKET;
    			else if (i_515_ == 47)
    				class379 = OutgoingPacket.PLAYER_OPTION_4_PACKET;
    			else if (48 == i_515_)
    				class379 = OutgoingPacket.PLAYER_OPTION_5_PACKET;
    			else if (i_515_ == 49)
    				class379 = OutgoingPacket.PLAYER_OPTION_6_PACKET;
    			else if (i_515_ == 50)
    				class379 = OutgoingPacket.PLAYER_OPTION_7_PACKET;
    			else if (51 == i_515_)
    				class379 = OutgoingPacket.PLAYER_OPTION_8_PACKET;
    			else if (i_515_ == 52)
    				class379 = OutgoingPacket.PLAYER_OPTION_9_PACKET;
    			else if (i_515_ == 53)
    				class379 = OutgoingPacket.PLAYER_OPTION_10_PACKET;
    Class96_Sub4.java
    Code:
    method13789
    
    if (i_5_ == 44)
    				class379 = OutgoingPacket.PLAYER_OPTION_1_PACKET;
    			else if (45 == i_5_)
    				class379 = OutgoingPacket.PLAYER_OPTION_2_PACKET;
    			else if (46 == i_5_)
    				class379 = OutgoingPacket.PLAYER_OPTION_3_PACKET;
    			else if (i_5_ == 47)
    				class379 = OutgoingPacket.PLAYER_OPTION_4_PACKET;
    			else if (48 == i_5_)
    				class379 = OutgoingPacket.PLAYER_OPTION_5_PACKET;
    			else if (i_5_ == 49)
    				class379 = OutgoingPacket.PLAYER_OPTION_6_PACKET;
    			else if (i_5_ == 50)
    				class379 = OutgoingPacket.PLAYER_OPTION_7_PACKET;
    			else if (51 == i_5_)
    				class379 = OutgoingPacket.PLAYER_OPTION_8_PACKET;
    			else if (i_5_ == 52)
    				class379 = OutgoingPacket.PLAYER_OPTION_9_PACKET;
    			else if (i_5_ == 53)
    				class379 = OutgoingPacket.PLAYER_OPTION_10_PACKET;
    Client,java
    Code:
    method11916
    
    if (1 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_1_PACKET;
    				else if (4 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_4_PACKET;
    				else if (i == 5)
    					class379 = OutgoingPacket.PLAYER_OPTION_5_PACKET;
    				else if (6 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_6_PACKET;
    				else if (i == 7)
    					class379 = OutgoingPacket.PLAYER_OPTION_7_PACKET;
    				else if (i == 9)
    					class379 = OutgoingPacket.PLAYER_OPTION_9_PACKET;
    
    method11987
    
    if (1 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_1_PACKET;
    				else if (4 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_4_PACKET;
    				else if (i == 5)
    					class379 = OutgoingPacket.PLAYER_OPTION_5_PACKET;
    				else if (6 == i)
    					class379 = OutgoingPacket.PLAYER_OPTION_6_PACKET;
    				else if (i == 7)
    					class379 = OutgoingPacket.PLAYER_OPTION_7_PACKET;
    				else if (i == 9)
    					class379 = OutgoingPacket.PLAYER_OPTION_9_PACKET;
    Reply With Quote  
     

  2. #12  
    Registered Member
    Join Date
    Feb 2017
    Age
    26
    Posts
    53
    Thanks given
    3
    Thanks received
    4
    Rep Power
    11
    bump
    Reply With Quote  
     

  3. #13  
    Registered Member
    Join Date
    Feb 2017
    Age
    26
    Posts
    53
    Thanks given
    3
    Thanks received
    4
    Rep Power
    11
    bump, also happens when i convert a 742 into 727
    Reply With Quote  
     

  4. #14  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,556
    Thanks given
    654
    Thanks received
    640
    Rep Power
    358
    Idk, share your full WorldPacketsDecoder?
    Project thread
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  5. #15  
    Registered Member
    Join Date
    Feb 2017
    Age
    26
    Posts
    53
    Thanks given
    3
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by clem585 View Post
    Idk, share your full WorldPacketsDecoder?
    that's what i said idk whats happening lol..


    Code:
    
    package com.rs.net.decoders;
    
    import com.rs.Settings;
    import com.rs.game.Animation;
    import com.rs.game.Graphics;
    import com.rs.game.World;
    import com.rs.game.WorldObject;
    import com.rs.game.WorldTile;
    import com.rs.game.item.FloorItem;
    import com.rs.game.item.Item;
    import com.rs.game.minigames.clanwars.ClanWars;
    import com.rs.game.minigames.creations.StealingCreation;
    import com.rs.game.minigames.duel.DuelArena;
    import com.rs.game.npc.NPC;
    import com.rs.game.npc.familiar.Familiar;
    import com.rs.game.npc.familiar.Familiar.SpecialAttack;
    import com.rs.game.player.CoordsEvent;
    import com.rs.game.player.Inventory;
    import com.rs.game.player.LogicPacket;
    import com.rs.game.player.Player;
    import com.rs.game.player.PublicChatMessage;
    import com.rs.game.player.QuickChatMessage;
    import com.rs.game.player.Skills;
    import com.rs.game.player.actions.PlayerCombat;
    import com.rs.game.player.actions.PlayerFollow;
    import com.rs.game.player.actions.Summoning;
    import com.rs.game.player.content.Commands;
    import com.rs.game.player.content.FriendChatsManager;
    import com.rs.game.player.content.Magic;
    import com.rs.game.player.content.Notes.Note;
    import com.rs.game.route.RouteFinder;
    import com.rs.game.route.strategy.FixedTileStrategy;
    import com.rs.game.player.content.SkillCapeCustomizer;
    import com.rs.game.player.content.Vote;
    import com.rs.io.InputStream;
    import com.rs.net.Session;
    import com.rs.net.decoders.handlers.ButtonHandler;
    import com.rs.net.decoders.handlers.InventoryOptionsHandler;
    import com.rs.net.decoders.handlers.NPCHandler;
    import com.rs.net.decoders.handlers.ObjectHandler;
    import com.rs.utils.DisplayNames;
    import com.rs.utils.Logger;
    import com.rs.utils.Utils;
    import com.rs.utils.huffman.Huffman;
    
    public final class WorldPacketsDecoder extends Decoder {
    
    	private static final byte[] PACKET_SIZES = new byte[104];
    
    	//WALKING
    	private final static int WALKING_PACKET = 33;
    	private final static int MINI_WALKING_PACKET = 42;
    	
    	//BUTTONS
    	public final static int ACTION_BUTTON1_PACKET = 96;
    	public final static int ACTION_BUTTON2_PACKET = 27;
    	public final static int ACTION_BUTTON3_PACKET = 68;
    	public final static int ACTION_BUTTON4_PACKET = 9;
    	public final static int ACTION_BUTTON5_PACKET = 72;
    	public final static int ACTION_BUTTON6_PACKET = 19;
    	public final static int ACTION_BUTTON7_PACKET = 23;
    	public final static int ACTION_BUTTON8_PACKET = 21;
    	public final static int ACTION_BUTTON9_PACKET = 22;
    	public final static int ACTION_BUTTON10_PACKET = 81;
    	
    	//PLAYER BUTTONS
    	private final static int PLAYER_OPTION_1_PACKET = 66;
    	private final static int PLAYER_OPTION_2_PACKET = 6;
    	private final static int PLAYER_OPTION_3_PACKET = 31;
    	private final static int PLAYER_OPTION_4_PACKET = 89;
    	private final static int PLAYER_OPTION_5_PACKET = 103;
    	private final static int PLAYER_OPTION_6_PACKET = 1;
    	private final static int PLAYER_OPTION_7_PACKET = 51;
    	private final static int PLAYER_OPTION_8_PACKET = 94;
    	private final static int PLAYER_OPTION_9_PACKET = 53;
    	private final static int PLAYER_OPTION_10_PACKET = 70;
    	
    	//OBJECT BUTTONS
    	private final static int OBJECT_CLICK1_PACKET = 75;
    	private final static int OBJECT_CLICK2_PACKET = 93;
    	private final static int OBJECT_CLICK3_PACKET = 38;
    	private final static int OBJECT_CLICK4_PACKET = 32;
    	private final static int OBJECT_CLICK5_PACKET = 48;
    	private final static int OBJECT_EXAMINE_PACKET = 73;
    	
    	
    	//NPC BUTTONS
    	private final static int ATTACK_NPC = 16;
    	private static final int NPC_EXAMINE_PACKET = 3;
    	private final static int NPC_CLICK1_PACKET = 65;
    	private final static int NPC_CLICK2_PACKET = 50;
    	private final static int NPC_CLICK3_PACKET = 77;
    	private final static int NPC_CLICK4_PACKET = 95;
    	
    	//MISC
    	private final static int COMMANDS_PACKET = 85;
    	private final static int DIALOGUE_CONTINUE_PACKET = 49;
    	private final static int SCREEN_PACKET = 84;
    	private final static int CLOSE_INTERFACE_PACKET = 60;
    	private final static int REPORT_ABUSE_PACKET = 100;
    	private final static int ADD_IGNORE_PACKET = 34;
    	private final static int REMOVE_IGNORE_PACKET = 12;
    	private final static int ADD_FRIEND_PACKET = 26;
    	private final static int REMOVE_FRIEND_PACKET = 29;
    	private final static int KEY_PRESSED_PACKET = 28;
    	private final static int INACTIVITY_PACKET = 0;
    	private final static int ENTER_LONGSTRING_PACKET = 87;
    	private final static int ENTER_NAME_PACKET = 80;
    	private final static int ENTER_INTEGER_PACKET = 58;
    	private static final int GRAND_EXCHANGE_PACKET = 17;
    	private final static int COLOR_ID_PACKET = 11;
    	private final static int CHAT_TYPE_PACKET = 30;
    	
    	//INTERFACE COMPONENT INTERACTION
    	private final static int SWITCH_INTERFACE_ITEM_PACKET = 74;
    	private final static int INTERFACE_ON_INTERFACE_PACKET = 4;
    	
    	//FRIENDS CHAT
    	private final static int JOIN_FRIEND_CHAT_PACKET = 71;
    	private final static int CHANGE_FRIEND_CHAT_PACKET = 7;
    	private final static int KICK_FRIEND_CHAT_PACKET = 91;
    	
    	//CHAT TYPES
    	private final static int CHAT_PACKET = 86;
    	private final static int PUBLIC_QUICK_CHAT_PACKET = 64;
    	
    	private final static int SEND_FRIEND_MESSAGE_PACKET = 15;
    	private final static int SEND_FRIEND_QUICK_CHAT_PACKET = 14;
    	
    	private final static int ITEM_TAKE_PACKET = 54;
    	private final static int GROUND_ITEM_EXAMINE = 61;
     
    	private final static int INTERFACE_ON_OBJECT = 98;
    	private final static int INTERFACE_ON_PLAYER = 13;
    	private final static int INTERFACE_ON_NPC = 41;
    	
    	
    
    	public final static int WORLD_MAP_CLICK = 5;
    	private final static int DONE_LOADING_REGION_PACKET = -1;
    	
    	private final static int AFK_PACKET = -1;
    	public final static int RECEIVE_PACKET_COUNT_PACKET = -1;
    	private final static int MOVE_CAMERA_PACKET = 83; 
    	private final static int CLICK_PACKET = 59; 
    	private final static int MOVE_MOUSE_PACKET = -1;
    	private final static int IN_OUT_SCREEN_PACKET = -1;
    	private final static int PING_PACKET = -1;
    
    	private final static int MAGIC_ON_ITEM_PACKET = -1; //ignore this one - shitty configuration
    	
    	
    
    	static {
    		loadPacketSizes();
    	}
    
    	public static void loadPacketSizes() {
    		PACKET_SIZES[0] = 0;
    		PACKET_SIZES[1] = 3;
    		PACKET_SIZES[2] = 4;
    		PACKET_SIZES[3] = 3;
    		PACKET_SIZES[4] = 16;
    		PACKET_SIZES[5] = 4;
    		PACKET_SIZES[6] = 3;
    		PACKET_SIZES[7] = -1;
    		PACKET_SIZES[8] = 7;
    		PACKET_SIZES[9] = 8;
    		PACKET_SIZES[10] = -1;
    		PACKET_SIZES[11] = 2;
    		PACKET_SIZES[12] = -1;
    		PACKET_SIZES[13] = 11;
    		PACKET_SIZES[14] = -1;
    		PACKET_SIZES[15] = -2;
    		PACKET_SIZES[16] = 3;
    		PACKET_SIZES[17] = 2;
    		PACKET_SIZES[18] = 4;
    		PACKET_SIZES[19] = 8;
    		PACKET_SIZES[20] = 3;
    		PACKET_SIZES[21] = 8;
    		PACKET_SIZES[22] = 8;
    		PACKET_SIZES[23] = 8;
    		PACKET_SIZES[24] = 7;
    		PACKET_SIZES[25] = 7;
    		PACKET_SIZES[26] = -1;
    		PACKET_SIZES[27] = 8;
    		PACKET_SIZES[28] = -2;
    		PACKET_SIZES[29] = -1;
    		PACKET_SIZES[30] = 1;
    		PACKET_SIZES[31] = 3;
    		PACKET_SIZES[32] = 9;
    		PACKET_SIZES[33] = 5;
    		PACKET_SIZES[34] = -1;
    		PACKET_SIZES[35] = -2;
    		PACKET_SIZES[36] = -1;
    		PACKET_SIZES[37] = 2;
    		PACKET_SIZES[38] = 9;
    		PACKET_SIZES[39] = -1;
    		PACKET_SIZES[40] = -1;
    		PACKET_SIZES[41] = 11;
    		PACKET_SIZES[42] = 18;
    		PACKET_SIZES[43] = 7;
    		PACKET_SIZES[44] = 9;
    		PACKET_SIZES[45] = 1;
    		PACKET_SIZES[46] = 12;
    		PACKET_SIZES[47] = 4;
    		PACKET_SIZES[48] = 9;
    		PACKET_SIZES[49] = 6;
    		PACKET_SIZES[50] = 3;
    		PACKET_SIZES[51] = 3;
    		PACKET_SIZES[52] = -1;
    		PACKET_SIZES[53] = 3;
    		PACKET_SIZES[54] = 7;
    		PACKET_SIZES[55] = 4;
    		PACKET_SIZES[56] = -2;
    		PACKET_SIZES[57] = 7;
    		PACKET_SIZES[58] = 4;
    		PACKET_SIZES[59] = 6;
    		PACKET_SIZES[60] = 0;
    		PACKET_SIZES[61] = 7;
    		PACKET_SIZES[62] = 1;
    		PACKET_SIZES[63] = 4;
    		PACKET_SIZES[64] = -1;
    		PACKET_SIZES[65] = 3;
    		PACKET_SIZES[66] = 3;
    		PACKET_SIZES[67] = 15;
    		PACKET_SIZES[68] = 8;
    		PACKET_SIZES[69] = -1;
    		PACKET_SIZES[70] = 3;
    		PACKET_SIZES[71] = -1;
    		PACKET_SIZES[72] = 8;
    		PACKET_SIZES[73] = 9;
    		PACKET_SIZES[74] = 16;
    		PACKET_SIZES[75] = 9;
    		PACKET_SIZES[76] = 0;
    		PACKET_SIZES[77] = 3;
    		PACKET_SIZES[78] = -1;
    		PACKET_SIZES[79] = 1;
    		PACKET_SIZES[80] = -1;
    		PACKET_SIZES[81] = 8;
    		PACKET_SIZES[82] = 4;
    		PACKET_SIZES[83] = 4;
    		PACKET_SIZES[84] = 6;
    		PACKET_SIZES[85] = -1;
    		PACKET_SIZES[86] = -1;
    		PACKET_SIZES[87] = -1;
    		PACKET_SIZES[88] = 2;
    		PACKET_SIZES[89] = 3;
    		PACKET_SIZES[90] = -1;
    		PACKET_SIZES[91] = -1;
    		PACKET_SIZES[92] = -2;
    		PACKET_SIZES[93] = 9;
    		PACKET_SIZES[94] = 3;
    		PACKET_SIZES[95] = 3;
    		PACKET_SIZES[96] = 8;
    		PACKET_SIZES[97] = -1;
    		PACKET_SIZES[98] = 17;
    		PACKET_SIZES[99] = -2;
    		PACKET_SIZES[100] = -1;
    		PACKET_SIZES[101] = -2;
    		PACKET_SIZES[102] = -2;
    		PACKET_SIZES[103] = 3;
    	}
    
    	private Player player;
    	private int chatType;
    
    	public WorldPacketsDecoder(Session session, Player player) {
    		super(session);
    		this.player = player;
    	}
    
    	@Override
    	public void decode(InputStream stream) {
    		while (stream.getRemaining() > 0 && session.getChannel().isConnected()
    				&& !player.hasFinished()) {
    			int packetId = stream.readPacket(player);
    			if (packetId >= PACKET_SIZES.length || packetId < 0) {
    				if (Settings.DEBUG)
    					System.out.println("PacketId " + packetId
    							+ " has fake packet id.");
    				break;
    			}
    			int length = PACKET_SIZES[packetId];
    			if (length == -1)
    				length = stream.readUnsignedByte();
    			else if (length == -2)
    				length = stream.readUnsignedShort();
    			else if (length == -3)
    				length = stream.readInt();
    			else if (length == -4) {
    				length = stream.getRemaining();
    				if (Settings.DEBUG)
    					System.out.println("Invalid size for PacketId " + packetId
    							+ ". Size guessed to be " + length);
    			}
    			if (length > stream.getRemaining()) {
    				length = stream.getRemaining();
    				if (Settings.DEBUG)
    					System.out.println("PacketId " + packetId
    							+ " has fake size. - expected size " + length);
    				// break;
    
    			}
    			/*
    			 * System.out.println("PacketId " +packetId+
    			 * " has . - expected size " +length);
    			 */
    			int startOffset = stream.getOffset();
    			processPackets(packetId, stream, length);
    			stream.setOffset(startOffset + length);
    		}
    	}
    
    	public static void decodeLogicPacket(final Player player, LogicPacket packet) {
    		int packetId = packet.getId();
    		InputStream stream = new InputStream(packet.getData());
    		if (packetId == WALKING_PACKET || packetId == MINI_WALKING_PACKET) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion() || player.isDead())
    				return;
    			long currentTime = Utils.currentTimeMillis();
    			if (player.getLockDelay() > currentTime)
    				return;
    			if (player.getFreezeDelay() >= currentTime) {
    				player.getPackets().sendGameMessage("A magical force prevents you from moving.");
    				return;
    			}
    			int length = stream.getLength();
    			/*
    			 * if (packetId == MINI_WALKING_PACKET) length -= 13;
    			 */
    			boolean forceRun = stream.readUnsignedByte() == 1;
    			if (forceRun)
    				player.setRun(forceRun);
    			int baseX = stream.readUnsignedShort();
    			int baseY = stream.readUnsignedShortLE();
                int steps = RouteFinder.findRoute(RouteFinder.WALK_ROUTEFINDER, player.getX(), player.getY(), player.getPlane(), player.getSize(), new FixedTileStrategy(baseX, baseY), true);
    			if (steps > 25)
    	            steps = 25;
    	        player.stopAll();
    	        player.setNextFaceEntity(null);
    	        if (steps > 0) {
    	            int x = 0, y = 0;
    	            for (int step = 0; step < steps; step++) {
    	                x = baseX + stream.readUnsignedByte();
    	                y = baseY + stream.readUnsignedByte();
    	            }
    	            
    	            int[] bufferX = RouteFinder.getLastPathBufferX();
    	            int[] bufferY = RouteFinder.getLastPathBufferY();
    	            int last = -1;
    	            for (int i = steps - 1; i >= 0; i--) {
    	                if (!player.addWalkSteps(bufferX[i], bufferY[i], 25, true))
    	                    break;
    	                last = i;
    	            }
    	            if (last != -1) {
    	                WorldTile tile = new WorldTile(bufferX[last], bufferY[last], player.getPlane());
    	                player.getPackets().sendMinimapFlag(tile.getLocalX(player.getLastLoadedMapRegionTile(), player.getMapSize()), tile.getLocalY(player.getLastLoadedMapRegionTile(), player.getMapSize()));
    	            } else {
    	                player.getPackets().sendResetMinimapFlag();
    	            }
    	        }
    		} else if (packetId == INTERFACE_ON_OBJECT) {
    			boolean forceRun = stream.readByte128() == 1;
    			int itemId = stream.readShortLE128();
    			int y = stream.readShortLE128();
    			int objectId = stream.readIntV2();
    			int interfaceHash = stream.readInt();
    			final int interfaceId = interfaceHash >> 16;
    			int slot = stream.readShortLE();
    			int x = stream.readShort128();
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			long currentTime = Utils.currentTimeMillis();
    			if (player.getLockDelay() >= currentTime || player.getEmotesManager().getNextEmoteEnd() >= currentTime)
    				return;
    			final WorldTile tile = new WorldTile(x, y, player.getPlane());
    			int regionId = tile.getRegionId();
    			if (!player.getMapRegionsIds().contains(regionId))
    				return;
    			WorldObject mapObject = World.getRegion(regionId).getObject(objectId, tile);
    			if (mapObject == null || mapObject.getId() != objectId)
    				return;
    			final WorldObject object = !player.isAtDynamicRegion() ? mapObject : new WorldObject(objectId, mapObject.getType(), mapObject.getRotation(), x, y, player.getPlane());
    			final Item item = player.getInventory().getItem(slot);
    			if (player.isDead() || Utils.getInterfaceDefinitionsSize() <= interfaceId)
    				return;
    			if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    			if (!player.getInterfaceManager().containsInterface(interfaceId))
    				return;
    			if (item == null || item.getId() != itemId)
    				return;
    			player.stopAll(false); // false
    			if(forceRun)
    				player.setRun(forceRun);
    			switch (interfaceId) {
    			case Inventory.INVENTORY_INTERFACE: // inventory
    				ObjectHandler.handleItemOnObject(player, object, interfaceId, item);
    				break;
    			}
    		} else if (packetId == PLAYER_OPTION_2_PACKET) {
    			player.sm("TEST.");
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    				    || player.isDead())
    				return;
    			    boolean unknown = stream.readByte() == 1;
    			    int playerIndex = stream.readUnsignedShort128();
    			    Player p2 = World.getPlayers().get(playerIndex);
    			    if (p2 == null || p2.isDead() || p2.hasFinished()
    				    || !player.getMapRegionsIds().contains(p2.getRegionId()))
    				return;
    			    if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    			    if (player.getControlerManager().getControler() instanceof DuelArena)
    				return;
    			    player.stopAll(false);
    			    player.getActionManager().setAction(new PlayerFollow(p2));
    		} else if (packetId == PLAYER_OPTION_4_PACKET) {
    			player.sm("TEST.");
    			 boolean unknown = stream.readByte() == 1;
    			    int playerIndex = stream.readUnsignedShort128();
    			    Player p2 = World.getPlayers().get(playerIndex);
    			    if (p2 == null || p2.isDead() || p2.hasFinished()
    				    || !player.getMapRegionsIds().contains(p2.getRegionId())
    				    || player.getLockDelay() >= Utils.currentTimeMillis()
    				    || player == p2)
    				return;
    			    player.stopAll(false);
    			    player.faceEntity(p2);
    			    /*if (player.checkTotalLevel(300) < 300) {
    				player.sendMessage("You need atleast a total level of 300 to trade.");
    				return;
    			    }*/
    			    if (p2.getInterfaceManager().containsScreenInter()) {
    				player.getPackets()
    					.sendGameMessage("The other player is busy.");
    				return;
    			    }
    			    if (player.getX() == p2.getX() && player.getY() == p2.getY()) {
    				if (!player.addWalkSteps(player.getX() - 1, player.getY(), 1))
    				    if (!player.addWalkSteps(player.getX() + 1, player.getY(),
    					    1))
    					if (!player.addWalkSteps(player.getX(),
    						player.getY() + 1, 1))
    					    player.addWalkSteps(player.getX(),
    						    player.getY() - 1, 1);
    			    }
    			    if (player.getX() == p2.getX() && player.getY() == p2.getY()) {
    				player.getPackets().sendGameMessage("Unable to trade here.");
    				return;
    			    }
    			    if (!p2.withinDistance(player, 14)) {
    				player.getPackets().sendGameMessage(
    					"Unable to find target " + p2.getDisplayName());
    				return;
    			    }
    			    if (p2.getTemporaryAttributtes().get("TradeTarget") == player) {
    				p2.getTemporaryAttributtes().remove("TradeTarget");
    				player.getTrade().openTrade(p2);
    				p2.getTrade().openTrade(player);
    				return;
    			    }
    			    player.getTemporaryAttributtes().put("TradeTarget", p2);
    			    player.getPackets().sendGameMessage(
    				    "Sending " + p2.getDisplayName() + " a request...");
    			    p2.getPackets().sendTradeRequestMessage(player);
    		} else if (packetId == PLAYER_OPTION_1_PACKET) {
    			  if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					    || player.isDead())
    					return;
    				    boolean unknown = stream.readByte() == 1;
    				    int playerIndex = stream.readUnsignedShort128();
    				    Player p2 = World.getPlayers().get(playerIndex);
    				    if (p2 == null || p2.isDead() || p2.hasFinished()
    					    || !player.getMapRegionsIds().contains(p2.getRegionId()))
    					return;
    				    if (player.getLockDelay() > Utils.currentTimeMillis()
    					    || !player.getControlerManager().canPlayerOption1(p2))
    					return;
    				    if (!player.isCanPvp())
    					return;
    				    if (!player.getControlerManager().canAttack(p2))
    					return;
    				    if (!player.isCanPvp() || !p2.isCanPvp()) {
    					player.getPackets()
    						.sendGameMessage(
    							"You can only attack players in a player-vs-player area.");
    					return;
    				    }
    				    if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
    					if (player.getAttackedBy() != p2
    						&& player.getAttackedByDelay() > Utils
    							.currentTimeMillis()) {
    					    player.getPackets().sendGameMessage(
    						    "You are already in combat.");
    					    return;
    					}
    					if (p2.getAttackedBy() != player
    						&& p2.getAttackedByDelay() > Utils.currentTimeMillis()) {
    					    if (p2.getAttackedBy() instanceof NPC) {
    						p2.setAttackedBy(player); // changes enemy to player,
    						// player has priority over
    						// npc on single areas
    					    } else {
    						player.getPackets().sendGameMessage(
    							"That player is already in combat.");
    						return;
    					    }
    					}
    				    }
    				    player.stopAll(false);
    				    player.getActionManager().setAction(new PlayerCombat(p2));
    		} else if (packetId == ATTACK_NPC) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead()) {
    				return;
    			}
    			if (player.getLockDelay() > Utils.currentTimeMillis()) {
    				return;
    			}
    			int npcIndex = stream.readUnsignedShort128();
    			boolean forceRun = stream.read128Byte() == 1;
    			if(forceRun)
    				player.setRun(forceRun);
    			NPC npc = World.getNPCs().get(npcIndex);
    			if (npc == null || npc.isDead() || npc.hasFinished()
    					|| !player.getMapRegionsIds().contains(npc.getRegionId())
    					|| !npc.getDefinitions().hasAttackOption()) {
    				return;
    			}
    			if (!player.getControlerManager().canAttack(npc)) {
    				return;
    			}
    			if (npc instanceof Familiar) {
    				Familiar familiar = (Familiar) npc;
    				if (familiar == player.getFamiliar()) {
    					player.getPackets().sendGameMessage(
    							"You can't attack your own familiar.");
    					return;
    				}
    				if (!familiar.canAttack(player)) {
    					player.getPackets().sendGameMessage(
    							"You can't attack this npc.");
    					return;
    				}
    			} else if (!npc.isForceMultiAttacked()) {
    				if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
    					if (player.getAttackedBy() != npc
    							&& player.getAttackedByDelay() > Utils
    							.currentTimeMillis()) {
    						player.getPackets().sendGameMessage(
    								"You are already in combat.");
    						return;
    					}
    					if (npc.getAttackedBy() != player
    							&& npc.getAttackedByDelay() > Utils
    							.currentTimeMillis()) {
    						player.getPackets().sendGameMessage(
    								"This npc is already in combat.");
    						return;
    					}
    				}
    			}
    			player.stopAll(false);
    			player.getActionManager().setAction(new PlayerCombat(npc));
    		} else if (packetId == INTERFACE_ON_PLAYER) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk1 = stream.readUnsignedShort();
    			int playerIndex = stream.readUnsignedShort();
    			int interfaceHash = stream.readIntV2();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk2 = stream.readUnsignedShortLE128();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean unknown = stream.read128Byte() == 1;
    			int interfaceId = interfaceHash >> 16;
    			int componentId = interfaceHash - (interfaceId << 16);
    			if (Utils.getInterfaceDefinitionsSize() <= interfaceId)
    				return;
    			if (!player.getInterfaceManager().containsInterface(interfaceId))
    				return;
    			if (componentId == 65535)
    				componentId = -1;
    			if (componentId != -1
    					&& Utils.getInterfaceDefinitionsComponentsSize(interfaceId) <= componentId)
    				return;
    			Player p2 = World.getPlayers().get(playerIndex);
    			if (p2 == null || p2.isDead() || p2.hasFinished()
    					|| !player.getMapRegionsIds().contains(p2.getRegionId()))
    				return;
    			player.stopAll(false);
    			switch (interfaceId) {
    			case 662:
    			case 747:
    				if (player.getFamiliar() == null)
    					return;
    				player.resetWalkSteps();
    				if ((interfaceId == 747 && componentId == 15)
    						|| (interfaceId == 662 && componentId == 65)
    						|| (interfaceId == 662 && componentId == 74)
    						|| interfaceId == 747 && componentId == 18) {
    					if ((interfaceId == 662 && componentId == 74
    							|| interfaceId == 747 && componentId == 24 || interfaceId == 747
    							&& componentId == 18)) {
    						if (player.getFamiliar().getSpecialAttack() != SpecialAttack.ENTITY)
    							return;
    					}
    					if (!player.isCanPvp() || !p2.isCanPvp()) {
    						player.getPackets()
    						.sendGameMessage(
    								"You can only attack players in a player-vs-player area.");
    						return;
    					}
    					if (!player.getFamiliar().canAttack(p2)) {
    						player.getPackets()
    						.sendGameMessage(
    								"You can only use your familiar in a multi-zone area.");
    						return;
    					} else {
    						player.getFamiliar().setSpecial(
    								interfaceId == 662 && componentId == 74
    								|| interfaceId == 747
    								&& componentId == 18);
    						player.getFamiliar().setTarget(p2);
    					}
    				}
    				break;
    			case 193:
    				switch (componentId) {
    				case 28:
    				case 32:
    				case 24:
    				case 20:
    				case 30:
    				case 34:
    				case 26:
    				case 22:
    				case 29:
    				case 33:
    				case 25:
    				case 21:
    				case 31:
    				case 35:
    				case 27:
    				case 23:
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(p2
    								.getCoordFaceX(p2.getSize()), p2
    								.getCoordFaceY(p2.getSize()), p2.getPlane()));
    						if (!player.getControlerManager().canAttack(p2))
    							return;
    						if (!player.isCanPvp() || !p2.isCanPvp()) {
    							player.getPackets()
    							.sendGameMessage(
    									"You can only attack players in a player-vs-player area.");
    							return;
    						}
    						if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
    							if (player.getAttackedBy() != p2
    									&& player.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								player.getPackets()
    								.sendGameMessage(
    										"That "
    												+ (player
    														.getAttackedBy() instanceof Player ? "player"
    																: "npc")
    																+ " is already in combat.");
    								return;
    							}
    							if (p2.getAttackedBy() != player
    									&& p2.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								if (p2.getAttackedBy() instanceof NPC) {
    									p2.setAttackedBy(player); // changes enemy
    									// to player,
    									// player has
    									// priority over
    									// npc on single
    									// areas
    								} else {
    									player.getPackets()
    									.sendGameMessage(
    											"That player is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager()
    						.setAction(new PlayerCombat(p2));
    					}
    					break;
    				}
    			case 192:
    				switch (componentId) {
    				case 25: // air strike
    				case 28: // water strike
    				case 30: // earth strike
    				case 32: // fire strike
    				case 34: // air bolt
    				case 39: // water bolt
    				case 42: // earth bolt
    				case 45: // fire bolt
    				case 49: // air blast
    				case 52: // water blast
    				case 58: // earth blast
    				case 63: // fire blast
    				case 70: // air wave
    				case 73: // water wave
    				case 77: // earth wave
    				case 80: // fire wave
    				case 86: // teleblock
    				case 84: // air surge
    				case 87: // water surge
    				case 89: // earth surge
    				case 91: // fire surge
    				case 99: // storm of armadyl
    				case 36: // bind
    				case 66: // Sara Strike
    				case 67: // Guthix Claws
    				case 68: // Flame of Zammy
    				case 55: // snare
    				case 81: // entangle
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(p2
    								.getCoordFaceX(p2.getSize()), p2
    								.getCoordFaceY(p2.getSize()), p2.getPlane()));
    						if (!player.getControlerManager().canAttack(p2))
    							return;
    						if (!player.isCanPvp() || !p2.isCanPvp()) {
    							player.getPackets()
    							.sendGameMessage(
    									"You can only attack players in a player-vs-player area.");
    							return;
    						}
    						if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
    							if (player.getAttackedBy() != p2
    									&& player.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								player.getPackets()
    								.sendGameMessage(
    										"That "
    												+ (player
    														.getAttackedBy() instanceof Player ? "player"
    																: "npc")
    																+ " is already in combat.");
    								return;
    							}
    							if (p2.getAttackedBy() != player
    									&& p2.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								if (p2.getAttackedBy() instanceof NPC) {
    									p2.setAttackedBy(player); // changes enemy
    									// to player,
    									// player has
    									// priority over
    									// npc on single
    									// areas
    								} else {
    									player.getPackets()
    									.sendGameMessage(
    											"That player is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager()
    						.setAction(new PlayerCombat(p2));
    					}
    					break;
    				}
    				break;
    			}
    			if (Settings.DEBUG)
    				System.out.println("Spell:" + componentId);
    		} else if (packetId == INTERFACE_ON_NPC) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean unknown = stream.readByte() == 1;
    			int interfaceHash = stream.readInt();
    			int npcIndex = stream.readUnsignedShortLE();
    			int interfaceSlot = stream.readUnsignedShortLE128();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk2 =stream.readUnsignedShortLE();
    			int interfaceId = interfaceHash >> 16;
    			int componentId = interfaceHash - (interfaceId << 16);
    			if (Utils.getInterfaceDefinitionsSize() <= interfaceId)
    				return;
    			if (!player.getInterfaceManager().containsInterface(interfaceId))
    				return;
    			if (componentId == 65535)
    				componentId = -1;
    			if (componentId != -1
    					&& Utils.getInterfaceDefinitionsComponentsSize(interfaceId) <= componentId)
    				return;
    			NPC npc = World.getNPCs().get(npcIndex);
    			if (npc == null || npc.isDead() || npc.hasFinished()
    					|| !player.getMapRegionsIds().contains(npc.getRegionId()))
    				return;
    			player.stopAll(false);
    			if (interfaceId != Inventory.INVENTORY_INTERFACE) {
    				if (!npc.getDefinitions().hasAttackOption()) {
    					player.getPackets().sendGameMessage(
    							"You can't attack this npc.");
    					return;
    				}
    			}
    			switch (interfaceId) {
    			case Inventory.INVENTORY_INTERFACE:
    				Item item = player.getInventory().getItem(interfaceSlot);
    				if (item == null || !player.getControlerManager().processItemOnNPC(npc, item))
    					return;
    				InventoryOptionsHandler.handleItemOnNPC(player, npc, item);
    				break;
    			case 1165:
    				Summoning.attackDreadnipTarget(npc, player);
    				break;
    			case 662:
    			case 747:
    				if (player.getFamiliar() == null)
    					return;
    				player.resetWalkSteps();
    				if ((interfaceId == 747 && componentId == 15)
    						|| (interfaceId == 662 && componentId == 65)
    						|| (interfaceId == 662 && componentId == 74)
    						|| interfaceId == 747 && componentId == 18
    						|| interfaceId == 747 && componentId == 24) {
    					if ((interfaceId == 662 && componentId == 74 || interfaceId == 747
    							&& componentId == 18)) {
    						if (player.getFamiliar().getSpecialAttack() != SpecialAttack.ENTITY)
    							return;
    					}
    					if(npc instanceof Familiar) {
    						Familiar familiar = (Familiar) npc;
    						if (familiar == player.getFamiliar()) {
    							player.getPackets().sendGameMessage("You can't attack your own familiar.");
    							return;
    						}
    						if (!player.getFamiliar().canAttack(familiar.getOwner())) {
    							player.getPackets().sendGameMessage("You can only attack players in a player-vs-player area.");
    							return;
    						}
    					}
    					if (!player.getFamiliar().canAttack(npc)) {
    						player.getPackets()
    						.sendGameMessage(
    								"You can only use your familiar in a multi-zone area.");
    						return;
    					} else {
    						player.getFamiliar().setSpecial(
    								interfaceId == 662 && componentId == 74
    								|| interfaceId == 747
    								&& componentId == 18);
    						player.getFamiliar().setTarget(npc);
    					}
    				}
    				break;
    			case 193:
    				switch (componentId) {
    				case 28:
    				case 32:
    				case 24:
    				case 20:
    				case 30:
    				case 34:
    				case 26:
    				case 22:
    				case 29:
    				case 33:
    				case 25:
    				case 21:
    				case 31:
    				case 35:
    				case 27:
    				case 23:
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(npc
    								.getCoordFaceX(npc.getSize()), npc
    								.getCoordFaceY(npc.getSize()), npc.getPlane()));
    						if (!player.getControlerManager().canAttack(npc))
    							return;
    						if (npc instanceof Familiar) {
    							Familiar familiar = (Familiar) npc;
    							if (familiar == player.getFamiliar()) {
    								player.getPackets().sendGameMessage(
    										"You can't attack your own familiar.");
    								return;
    							}
    							if (!familiar.canAttack(player)) {
    								player.getPackets().sendGameMessage(
    										"You can't attack this npc.");
    								return;
    							}
    						} else if (!npc.isForceMultiAttacked()) {
    							if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
    								if (player.getAttackedBy() != npc
    										&& player.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"You are already in combat.");
    									return;
    								}
    								if (npc.getAttackedBy() != player
    										&& npc.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"This npc is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager().setAction(
    								new PlayerCombat(npc));
    					}
    					break;
    				}
    			case 192:
    				switch (componentId) {
    				case 25: // air strike
    				case 28: // water strike
    				case 30: // earth strike
    				case 32: // fire strike
    				case 34: // air bolt
    				case 39: // water bolt
    				case 42: // earth bolt
    				case 45: // fire bolt
    				case 49: // air blast
    				case 52: // water blast
    				case 58: // earth blast
    				case 63: // fire blast
    				case 70: // air wave
    				case 73: // water wave
    				case 77: // earth wave
    				case 80: // fire wave
    				case 84: // air surge
    				case 87: // water surge
    				case 89: // earth surge
    				case 66: // Sara Strike
    				case 67: // Guthix Claws
    				case 68: // Flame of Zammy
    				case 93:
    				case 91: // fire surge
    				case 99: // storm of Armadyl
    				case 36: // bind
    				case 55: // snare
    				case 81: // entangle
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(npc
    								.getCoordFaceX(npc.getSize()), npc
    								.getCoordFaceY(npc.getSize()), npc.getPlane()));
    						if (!player.getControlerManager().canAttack(npc))
    							return;
    						if (npc instanceof Familiar) {
    							Familiar familiar = (Familiar) npc;
    							if (familiar == player.getFamiliar()) {
    								player.getPackets().sendGameMessage(
    										"You can't attack your own familiar.");
    								return;
    							}
    							if (!familiar.canAttack(player)) {
    								player.getPackets().sendGameMessage(
    										"You can't attack this npc.");
    								return;
    							}
    						} else if (!npc.isForceMultiAttacked()) {
    							if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
    								if (player.getAttackedBy() != npc
    										&& player.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"You are already in combat.");
    									return;
    								}
    								if (npc.getAttackedBy() != player
    										&& npc.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"This npc is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager().setAction(
    								new PlayerCombat(npc));
    					}
    					break;
    				}
    				break;
    			}
    			if (Settings.DEBUG)
    				System.out.println("Spell:" + componentId);
    		} else if (packetId == NPC_CLICK1_PACKET)
    			NPCHandler.handleOption1(player, stream);
    		else if (packetId == NPC_CLICK2_PACKET)
    			NPCHandler.handleOption2(player, stream);
    		else if (packetId == NPC_CLICK3_PACKET)
    			NPCHandler.handleOption3(player, stream);
    		else if (packetId == OBJECT_CLICK1_PACKET)
    			ObjectHandler.handleOption(player, stream, 1);
    		else if (packetId == OBJECT_CLICK2_PACKET)
    			ObjectHandler.handleOption(player, stream, 2);
    		else if (packetId == OBJECT_CLICK3_PACKET)
    			ObjectHandler.handleOption(player, stream, 3);
    		else if (packetId == OBJECT_CLICK4_PACKET)
    			ObjectHandler.handleOption(player, stream, 4);
    		else if (packetId == OBJECT_CLICK5_PACKET)
    			ObjectHandler.handleOption(player, stream, 5);
    		else if (packetId == ITEM_TAKE_PACKET) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			long currentTime = Utils.currentTimeMillis();
    			if (player.getLockDelay() > currentTime)
    				// || player.getFreezeDelay() >= currentTime)
    				return;
    			int y = stream.readUnsignedShort();
    			int x = stream.readUnsignedShortLE();
    			final int id = stream.readUnsignedShort();
    			boolean forceRun = stream.read128Byte() == 1;
    			final WorldTile tile = new WorldTile(x, y, player.getPlane());
    			final int regionId = tile.getRegionId();
    			if (!player.getMapRegionsIds().contains(regionId))
    				return;
    			final FloorItem item = World.getRegion(regionId).getGroundItem(id,
    					tile, player);
    			if (item == null)
    				return;
    			player.stopAll(false);
    			if(forceRun)
    				player.setRun(forceRun);
    			player.setCoordsEvent(new CoordsEvent(tile, new Runnable() {
    				@Override
    				public void run() {
    					final FloorItem item = World.getRegion(regionId)
    							.getGroundItem(id, tile, player);
    					if (item == null)
    						return;
    			/*		if (player.getRights() > 0 || player.isSupporter()) 
    						player.getPackets().sendGameMessage("This item was dropped by [Username] "+item.getOwner().getUsername()+ " [DiplayName] "+item.getOwner().getDisplayName());
    			*/		player.setNextFaceWorldTile(tile);
    					player.addWalkSteps(tile.getX(), tile.getY(), 1);
    					World.removeGroundItem(player, item);
    				}
    			}, 1, 1));
    		}
    	}
    
    	public void processPackets(final int packetId, InputStream stream,
    			int length) {
    		player.setPacketsDecoderPing(Utils.currentTimeMillis());
    		if (packetId == PING_PACKET) {
    			// kk we ping :)
    		} else if (packetId == MOVE_MOUSE_PACKET) {
    			// USELESS PACKET
    		} else if (packetId == RECEIVE_PACKET_COUNT_PACKET) {
    			// interface packets
    			stream.readInt();
    		} else if (packetId == INTERFACE_ON_INTERFACE_PACKET) {
    			InventoryOptionsHandler.handleItemOnItem(player, stream);
    		} else if (packetId == MAGIC_ON_ITEM_PACKET) {
    			int inventoryInter = stream.readInt() >> 16;
    			int itemId = stream.readShort128();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk = stream.readShort();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int itemSlot = stream.readShortLE();
    			int interfaceSet = stream.readIntV1();
    			int spellId = interfaceSet & 0xFFF;
    			int magicInter = interfaceSet >> 16;
    			if (inventoryInter == 149 && magicInter == 192) {
    				switch (spellId) {
    				case 59:// High Alch
    					if (player.getSkills().getLevel(Skills.MAGIC) < 55) {
    						player.getPackets()
    						.sendGameMessage(
    								"You do not have the required level to cast this spell.");
    						return;
    					}
    					if (itemId == 995) {
    						player.getPackets().sendGameMessage(
    								"You can't alch this!");
    						return;
    					}
    					if (player.getEquipment().getWeaponId() == 1401
    							|| player.getEquipment().getWeaponId() == 3054
    							|| player.getEquipment().getWeaponId() == 19323) {
    						if (!player.getInventory().containsItem(561, 1)) {
    							player.getPackets()
    							.sendGameMessage(
    									"You do not have the required runes to cast this spell.");
    							return;
    						}
    						player.setNextAnimation(new Animation(9633));
    						player.setNextGraphics(new Graphics(112));
    						player.getInventory().deleteItem(561, 1);
    						player.getInventory().deleteItem(itemId, 1);
    						player.getInventory()
    						.addItem(
    								995,
    								new Item(itemId, 1).getDefinitions()
    								.getValue() >> 6);
    					} else {
    						if (!player.getInventory().containsItem(561, 1)
    								|| !player.getInventory().containsItem(554, 5)) {
    							player.getPackets()
    							.sendGameMessage(
    									"You do not have the required runes to cast this spell.");
    							return;
    						}
    						player.setNextAnimation(new Animation(713));
    						player.setNextGraphics(new Graphics(113));
    						player.getInventory().deleteItem(561, 1);
    						player.getInventory().deleteItem(554, 5);
    						player.getInventory().deleteItem(itemId, 1);
    						player.getInventory()
    						.addItem(
    								995,
    								new Item(itemId, 1).getDefinitions()
    								.getValue() >> 6);
    					}
    					break;
    				default:
    					System.out.println("Spell:" + spellId + ", Item:" + itemId);
    				}
    				System.out.println("Spell:" + spellId + ", Item:" + itemId);
    			}
    		} else if (packetId == AFK_PACKET) {
    			player.getSession().getChannel().close();
    		} else if (packetId == CLOSE_INTERFACE_PACKET) {
    			if (player.hasStarted() && !player.hasFinished() && !player.isRunning()) { //used for old welcome screen
    				player.run();
    				return;
    			}
    			player.stopAll();
    		} else if (packetId == MOVE_CAMERA_PACKET) {
    			// not using it atm
    			stream.readUnsignedShort();
    			stream.readUnsignedShort();
    		} else if (packetId == IN_OUT_SCREEN_PACKET) {
    			// not using this check because not 100% efficient
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean inScreen = stream.readByte() == 1;
    		} else if (packetId == SCREEN_PACKET) {
    			int displayMode = stream.readUnsignedByte();
    			player.setScreenWidth(stream.readUnsignedShort());
    			player.setScreenHeight(stream.readUnsignedShort());
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean switchScreenMode = stream.readUnsignedByte() == 1;
    			if (!player.hasStarted() || player.hasFinished()
    					|| displayMode == player.getDisplayMode()
    					|| !player.getInterfaceManager().containsInterface(742))
    				return;
    			player.setDisplayMode(displayMode);
    			player.getInterfaceManager().removeAll();
    			player.getInterfaceManager().sendInterfaces();
    			player.getInterfaceManager().sendInterface(742);
    		} else if (packetId == CLICK_PACKET) {
    			int mouseHash = stream.readShortLE128();
    			int mouseButton = mouseHash >> 15;
    			int time = mouseHash - (mouseButton << 15); // time
    			int positionHash = stream.readIntV1();
    			int y = positionHash >> 16; // y;
    			int x = positionHash - (y << 16); // x
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean clicked;
    			// mass click or stupid autoclicker, lets stop lagg
    			if (time <= 1 || x < 0 || x > player.getScreenWidth() || y < 0
    					|| y > player.getScreenHeight()) {
    				// player.getSession().getChannel().close();
    				clicked = false;
    				return;
    			}
    			clicked = true;
    		} else if (packetId == DIALOGUE_CONTINUE_PACKET) {
    			int interfaceHash = stream.readInt();
    			int junk = stream.readShort128();
    			int interfaceId = interfaceHash >> 16;
    			int buttonId = (interfaceHash & 0xFF);
    			if (Utils.getInterfaceDefinitionsSize() <= interfaceId) {
    				// hack, or server error or client error
    				// player.getSession().getChannel().close();
    				return;
    			}
    			if (!player.isRunning()
    					|| !player.getInterfaceManager().containsInterface(
    							interfaceId))
    				return;
    			if(Settings.DEBUG)
    				Logger.log(this, "Dialogue: "+interfaceId+", "+buttonId+", "+junk);
    			int componentId = interfaceHash - (interfaceId << 16);
    			player.getDialogueManager().continueDialogue(interfaceId,
    					componentId);
    		} else if (packetId == WORLD_MAP_CLICK) {
    			int coordinateHash = stream.readInt();
    			int x = coordinateHash >> 14;
    			int y = coordinateHash & 0x3fff;
    			int plane = coordinateHash >> 28;
                Integer hash  =  (Integer)player.getTemporaryAttributtes().get("worldHash");
    			if (hash == null || coordinateHash != hash)
    				player.getTemporaryAttributtes().put("worldHash", coordinateHash);
    			else {
    				player.getTemporaryAttributtes().remove("worldHash");
    				player.getHintIconsManager().addHintIcon(x, y, plane, 20, 0, 2, -1, true);
    				player.getPackets().sendConfig(1159, coordinateHash);
                }
    		} else if (packetId == ACTION_BUTTON1_PACKET
    				|| packetId == ACTION_BUTTON2_PACKET
    				|| packetId == ACTION_BUTTON4_PACKET
    				|| packetId == ACTION_BUTTON5_PACKET
    				|| packetId == ACTION_BUTTON6_PACKET
    				|| packetId == ACTION_BUTTON7_PACKET
    				|| packetId == ACTION_BUTTON8_PACKET
    				|| packetId == ACTION_BUTTON3_PACKET
    				|| packetId == ACTION_BUTTON9_PACKET
    				|| packetId == ACTION_BUTTON10_PACKET) {
    			ButtonHandler.handleButtons(player, stream, packetId);
    		} else if (packetId == ENTER_NAME_PACKET) {
    			if (!player.isRunning() || player.isDead())
    				return;
    			String value = stream.readString();
    			if (value.equals(""))
    				return;
    			if (player.getInterfaceManager().containsInterface(1108)) 
    				player.getFriendsIgnores().setChatPrefix(value);
    			else if (player.getTemporaryAttributtes().get("yellcolor") == Boolean.TRUE) {
    				if(value.length() != 6) {
    					player.getDialogueManager().startDialogue("SimpleMessage", "The HEX yell color you wanted to pick cannot be longer and shorter then 6.");
    				} else if(Utils.containsInvalidCharacter(value) || value.contains("_")) {
    					player.getDialogueManager().startDialogue("SimpleMessage", "The requested yell color can only contain numeric and regular characters.");
    				} else {
    					player.setYellColor(value);
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your yell color has been changed to <col="+player.getYellColor()+">"+player.getYellColor()+"</col>.");
    				}
    				player.getTemporaryAttributtes().put("yellcolor", Boolean.FALSE);
    			}
    			else if (player.getTemporaryAttributtes().get("entering_note") == Boolean.TRUE) {
    				player.getNotes().add(new Note(value, 1));
    				player.getNotes().refresh();
    				player.getTemporaryAttributtes().put("entering_note", Boolean.FALSE);
    				return;
    			} else if (player.getTemporaryAttributtes().get("editing_note") == Boolean.TRUE) {
    				Note note = (Note) player.getTemporaryAttributtes().get("curNote");
    				player.getNotes().getNotes().get(player.getNotes().getNotes().indexOf(note));
    				player.getNotes().refresh();
    				player.getTemporaryAttributtes().put("editing_note", Boolean.FALSE);
    			} else if (player.getTemporaryAttributtes().get("view_name") == Boolean.TRUE) {
    				player.getTemporaryAttributtes().remove("view_name");
    				Player other = World.getPlayerByDisplayName(value);
    				if (other == null) {
    					player.getPackets().sendGameMessage("Couldn't find player.");
    					return;
    				}
    				ClanWars clan = other.getCurrentFriendChat() != null ? other.getCurrentFriendChat().getClanWars() : null;
    				if (clan == null) {
    					player.getPackets().sendGameMessage("This player's clan is not in war.");
    					return;
    				}
    				if (clan.getSecondTeam().getOwnerDisplayName() != other.getCurrentFriendChat().getOwnerDisplayName()) {
    					player.getTemporaryAttributtes().put("view_prefix", 1);
    				}
    				player.getTemporaryAttributtes().put("view_clan", clan);
    				ClanWars.enter(player);
    			} else if (player.getTemporaryAttributtes().remove("setdisplay") != null) {
    				if(Utils.invalidAccountName(Utils
    						.formatPlayerNameForProtocol(value))) {
    					player.getPackets().sendGameMessage("Invalid name!");
    					return;
    				}
    				if(!DisplayNames.setDisplayName(player, value)) {
    					player.getPackets().sendGameMessage("Name already in use!");
    					return;
    				}
    				player.getPackets().sendGameMessage("Changed display name!");
    			} else if (player.getTemporaryAttributtes().remove("checkvoteinput") != null) 
    				Vote.checkVote(player, value);
    		} else if (packetId == ENTER_INTEGER_PACKET) {
    			if (!player.isRunning() || player.isDead())
    				return;
    			int value = stream.readInt();
    			if ((player.getInterfaceManager().containsInterface(762) && player
    					.getInterfaceManager().containsInterface(763))
    					|| player.getInterfaceManager().containsInterface(11)) {
    				if (value < 0)
    					return;
    				Integer bank_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("bank_item_X_Slot");
    				if (bank_item_X_Slot == null)
    					return;
    				player.getBank().setLastX(value);
    				player.getBank().refreshLastX();
    				if (player.getTemporaryAttributtes().remove("bank_isWithdraw") != null)
    					player.getBank().withdrawItem(bank_item_X_Slot, value);
    				else
    					player.getBank()
    							.depositItem(
    									bank_item_X_Slot,
    									value,
    									player.getInterfaceManager()
    											.containsInterface(11) ? false
    											: true);
    			} else if (player.getInterfaceManager().containsInterface(206)
    					&& player.getInterfaceManager().containsInterface(207)) {
    				if (value < 0)
    					return;
    				Integer pc_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("pc_item_X_Slot");
    				if (pc_item_X_Slot == null)
    					return;
    				if (player.getTemporaryAttributtes().remove("pc_isRemove") != null)
    					player.getPriceCheckManager().removeItem(pc_item_X_Slot,
    							value);
    				else
    					player.getPriceCheckManager()
    					.addItem(pc_item_X_Slot, value);
    			} else if (player.getInterfaceManager().containsInterface(671)
    					&& player.getInterfaceManager().containsInterface(665)) {
    				if (player.getFamiliar() == null
    						|| player.getFamiliar().getBob() == null)
    					return;
    				if (value < 0)
    					return;
    				Integer bob_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("bob_item_X_Slot");
    				if (bob_item_X_Slot == null)
    					return;
    				if (player.getTemporaryAttributtes().remove("bob_isRemove") != null)
    					player.getFamiliar().getBob()
    					.removeItem(bob_item_X_Slot, value);
    				else
    					player.getFamiliar().getBob()
    					.addItem(bob_item_X_Slot, value);
    			} else if (player.getInterfaceManager().containsInterface(335)
    					&& player.getInterfaceManager().containsInterface(336)) {
    				if (value < 0)
    					return;
    				Integer trade_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("trade_item_X_Slot");
    				if (trade_item_X_Slot == null)
    					return;
    				if (player.getTemporaryAttributtes().remove("trade_isRemove") != null)
    					player.getTrade().removeItem(trade_item_X_Slot, value);
    				else
    					player.getTrade().addItem(trade_item_X_Slot, value);
    			} else if (player.getTemporaryAttributtes().get("skillId") != null) {
    				if (player.getEquipment().wearingArmour()) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "You cannot do this while having armour on!");
    					return;
    				}
    				int skillId = (Integer) player.getTemporaryAttributtes()
    						.remove("skillId");
    				if (skillId == Skills.HITPOINTS && value <= 9)
    					value = 10;
    				else if (value < 1)
    					value = 1;
    				else if (value > 99)
    					value = 99;
    				player.getSkills().set(skillId, value);
    				player.getSkills().setXp(skillId, Skills.getXPForLevel(value));
    				player.getAppearence().generateAppearanceData();
    				player.getDialogueManager().finishDialogue();
    			} else if (player.getTemporaryAttributtes().get("kilnX") != null) {
    				int index = (Integer) player.getTemporaryAttributtes().get("scIndex");
    				int componentId = (Integer) player.getTemporaryAttributtes().get("scComponentId");
    				int itemId = (Integer) player.getTemporaryAttributtes().get("scItemId");
    				player.getTemporaryAttributtes().remove("kilnX");
    				if (StealingCreation.proccessKilnItems(player, componentId, index, itemId, value))
    					return;
    			}
    		} else if (packetId == SWITCH_INTERFACE_ITEM_PACKET) {
    			stream.readShortLE128();
    			int fromInterfaceHash = stream.readIntV1();
    			int toInterfaceHash = stream.readInt();
    			int fromSlot = stream.readUnsignedShort();
    			int toSlot = stream.readUnsignedShortLE128();
    			stream.readUnsignedShortLE();
    
    
    			int toInterfaceId = toInterfaceHash >> 16;
    				int toComponentId = toInterfaceHash - (toInterfaceId << 16);
    				int fromInterfaceId = fromInterfaceHash >> 16;
    				int fromComponentId = fromInterfaceHash - (fromInterfaceId << 16);
    
    				if (Utils.getInterfaceDefinitionsSize() <= fromInterfaceId
    						|| Utils.getInterfaceDefinitionsSize() <= toInterfaceId)
    					return;
    				if (!player.getInterfaceManager()
    						.containsInterface(fromInterfaceId)
    						|| !player.getInterfaceManager().containsInterface(
    								toInterfaceId))
    					return;
    				if (fromComponentId != -1
    						&& Utils.getInterfaceDefinitionsComponentsSize(fromInterfaceId) <= fromComponentId)
    					return;
    				if (toComponentId != -1
    						&& Utils.getInterfaceDefinitionsComponentsSize(toInterfaceId) <= toComponentId)
    					return;
    				if (fromInterfaceId == Inventory.INVENTORY_INTERFACE
    						&& fromComponentId == 0
    						&& toInterfaceId == Inventory.INVENTORY_INTERFACE
    						&& toComponentId == 0) {
    					toSlot -= 28;
    					if (toSlot < 0
    							|| toSlot >= player.getInventory()
    							.getItemsContainerSize()
    							|| fromSlot >= player.getInventory()
    							.getItemsContainerSize())
    						return;
    					player.getInventory().switchItem(fromSlot, toSlot);
    				} else if (fromInterfaceId == 763 && fromComponentId == 0
    						&& toInterfaceId == 763 && toComponentId == 0) {
    					if (toSlot >= player.getInventory().getItemsContainerSize()
    							|| fromSlot >= player.getInventory()
    							.getItemsContainerSize())
    						return;
    					player.getInventory().switchItem(fromSlot, toSlot);
    				} else if (fromInterfaceId == 762 && toInterfaceId == 762) {
    					player.getBank().switchItem(fromSlot, toSlot, fromComponentId,
    							toComponentId);
    				}
    				if (Settings.DEBUG)
    					System.out.println("Switch item " + fromInterfaceId + ", "
    							+ fromSlot + ", " + toSlot);
    		} else if (packetId == DONE_LOADING_REGION_PACKET) {
    			/*
    			 * if(!player.clientHasLoadedMapRegion()) { //load objects and items
    			 * here player.setClientHasLoadedMapRegion(); }
    			 * //player.refreshSpawnedObjects(); //player.refreshSpawnedItems();
    			 */
    		} else if (packetId == WALKING_PACKET
    				|| packetId == MINI_WALKING_PACKET
    				|| packetId == ITEM_TAKE_PACKET
    				|| packetId == PLAYER_OPTION_2_PACKET
    				|| packetId == PLAYER_OPTION_4_PACKET
    				|| packetId == PLAYER_OPTION_1_PACKET || packetId == ATTACK_NPC
    				|| packetId == INTERFACE_ON_PLAYER
    				|| packetId == INTERFACE_ON_NPC
    				|| packetId == NPC_CLICK1_PACKET
    				|| packetId == NPC_CLICK2_PACKET
    				|| packetId == NPC_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK1_PACKET
    				|| packetId == SWITCH_INTERFACE_ITEM_PACKET
    				|| packetId == OBJECT_CLICK2_PACKET
    				|| packetId == OBJECT_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK4_PACKET
    				|| packetId == OBJECT_CLICK5_PACKET
    				|| packetId == INTERFACE_ON_OBJECT)
    			player.addLogicPacketToQueue(new LogicPacket(packetId, length,
    					stream));
    		else if (packetId == OBJECT_EXAMINE_PACKET) {
    			ObjectHandler.handleOption(player, stream, -1);
    		}else if (packetId == NPC_EXAMINE_PACKET) {
    			NPCHandler.handleExamine(player, stream);
    		} else if (packetId == JOIN_FRIEND_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			FriendChatsManager.joinChat(stream.readString(), player);
    		} else if (packetId == KICK_FRIEND_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.setLastPublicMessage(Utils.currentTimeMillis() + 1000); // avoids
    			// message
    			// appearing
    			player.kickPlayerFromFriendsChannel(stream.readString());
    		} else if (packetId == CHANGE_FRIEND_CHAT_PACKET) {
    			if (!player.hasStarted()
    					|| !player.getInterfaceManager().containsInterface(1108))
    				return;
    			player.getFriendsIgnores().changeRank(stream.readString(),
    					stream.readUnsignedByte128());
    		} else if (packetId == ADD_FRIEND_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().addFriend(stream.readString());
    		} else if (packetId == REMOVE_FRIEND_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().removeFriend(stream.readString());
    		} else if (packetId == ADD_IGNORE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().addIgnore(stream.readString(), stream.readUnsignedByte() == 1);
    		} else if (packetId == REMOVE_IGNORE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().removeIgnore(stream.readString());
    		} else if (packetId == SEND_FRIEND_MESSAGE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			if (player.getMuted() > Utils.currentTimeMillis()) {
    				player.getPackets().sendGameMessage(
    						"You temporary muted. Recheck in 48 hours.");
    				return;
    			}
    			String username = stream.readString();
    			Player p2 = World.getPlayerByDisplayName(username);
    			if (p2 == null)
    				return;
    
    			player.getFriendsIgnores().sendMessage(
    					p2,
    					Utils.fixChatMessage(Huffman.readEncryptedMessage(150,
    							stream)));
    		} else if (packetId == SEND_FRIEND_QUICK_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			String username = stream.readString();
    			int fileId = stream.readUnsignedShort();
    			byte[] data = null;
    			if (length > 3 + username.length()) {
    				data = new byte[length - (3 + username.length())];
    				stream.readBytes(data);
    			}
    			data = Utils.completeQuickMessage(player, fileId, data);
    			Player p2 = World.getPlayerByDisplayName(username);
    			if (p2 == null)
    				return;
    			player.getFriendsIgnores().sendQuickChatMessage(p2,
    					new QuickChatMessage(fileId, data));
    		} else if (packetId == PUBLIC_QUICK_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			if (player.getLastPublicMessage() > Utils.currentTimeMillis())
    				return;
    			player.setLastPublicMessage(Utils.currentTimeMillis() + 300);
    			// just tells you which client script created packet
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean secondClientScript = stream.readByte() == 1;// script 5059
    			// or 5061
    			int fileId = stream.readUnsignedShort();
    			byte[] data = null;
    			if (length > 3) {
    				data = new byte[length - 3];
    				stream.readBytes(data);
    			}
    			data = Utils.completeQuickMessage(player, fileId, data);
    			if (chatType == 0)
    				player.sendPublicChatMessage(new QuickChatMessage(fileId, data));
    			else if (chatType == 1)
    				player.sendFriendsChannelQuickMessage(new QuickChatMessage(
    						fileId, data));
    			else if (Settings.DEBUG)
    				Logger.log(this, "Unknown chat type: " + chatType);
    		} else if (packetId == CHAT_TYPE_PACKET) {
    			chatType = stream.readUnsignedByte();
    		} else if (packetId == CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			if (player.getLastPublicMessage() > Utils.currentTimeMillis())
    				return;
    			player.setLastPublicMessage(Utils.currentTimeMillis() + 300);
    			int colorEffect = stream.readUnsignedByte();
    			int moveEffect = stream.readUnsignedByte();
    			String message = Huffman.readEncryptedMessage(200, stream);
    			if (message == null || message.replaceAll(" ", "").equals(""))
    				return;
    			if (message.startsWith("::") || message.startsWith(";;")) {
    				// if command exists and processed wont send message as public
    				// message
    				Commands.processCommand(player, message.replace("::", "")
    						.replace(";;", ""), false, false);
    				return;
    			}
    			if (player.getMuted() > Utils.currentTimeMillis()) {
    				player.getPackets().sendGameMessage(
    						"You temporary muted. Recheck in 48 hours.");
    				return;
    			}
    			int effects = (colorEffect << 8) | (moveEffect & 0xff);
    			if (chatType == 1)
    				player.sendFriendsChannelMessage(Utils.fixChatMessage(message));
    			else
    				player.sendPublicChatMessage(new PublicChatMessage(Utils
    						.fixChatMessage(message), effects));
    			player.setLastMsg(message);
    			if (Settings.DEBUG)
    				Logger.log(this, "Chat type: " + chatType);
    		} else if (packetId == COMMANDS_PACKET) {
    			if (!player.isRunning())
    				return;
    			boolean clientCommand = stream.readUnsignedByte() == 1;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean unknown = stream.readUnsignedByte() == 1;
    			String command = stream.readString();
    			if (!Commands.processCommand(player, command, true, clientCommand)
    					&& Settings.DEBUG)
    				Logger.log(this, "Command: " + command);
    		} else if (packetId == COLOR_ID_PACKET) {
    			if (!player.hasStarted())
    				return;
    			int colorId = stream.readUnsignedShort();
    			if (player.getTemporaryAttributtes().get("SkillcapeCustomize") != null)
    				SkillCapeCustomizer.handleSkillCapeCustomizerColor(player,
    						colorId);
    		}
    		else if (packetId == REPORT_ABUSE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			int byte0 = stream.readUnsignedByte(); //correlating to first letter? keystroke > alphabet/numeric letter??
    			String remaining_username = stream.readString(); //username missing the first letter, i.e when reporting "jordan" this will return "ordan"
    			int byte2 = stream.readUnsignedByte(); //mute type i.e "bug abuse", "scamming"
    			int byte3 = stream.readUnsignedByte(); // this is 1 when mute and 0 when no mute
    			String string2 = stream.readString(); //doesn't return anything... empty.. ""
    			
    			String supposed_username = Utils.getCharacterFromByte(byte0) + remaining_username;
    			
    			System.out.println(String.format("b1: %s, string1: %s, b2: %s, b3: %s, string2: %s", byte0, remaining_username, byte2, byte3, string2));
    			player.getPackets().sendGameMessage(supposed_username+"  "+ String.format("b1: %s, string1: %s, b2: %s, b3: %s, string2: %s", byte0, remaining_username, byte2, byte3, string2));
    			/ @[Only registered and activated users can see links. ]ressWarnings("unused")
    			String username = stream.readString();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int type = stream.readUnsignedByte();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean mute = stream.readUnsignedByte() == 1;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			String unknown2 = stream.readString();*/
    		} 
    		
    		else if (packetId == KEY_PRESSED_PACKET){
    			int short0 = stream.readUnsignedShort();
    //		 @[Only registered and activated users can see links. ]ressWarnings("unchecked") List<Integer> list = (List<Integer>) player.getTemporaryAttributtes().get("keystroke_test");
    //			list.add(pressed);
    			player.getPackets().sendGameMessage("pressed: "+Utils.getKeyPressedFromListenerByte(short0));
    		} else {
    			if (Settings.DEBUG)
    				Logger.log(this, "Missing packet " + packetId
    						+ ", expected size: " + length + ", actual size: "
    						+ PACKET_SIZES[packetId]);
    		}
    	}
    
    }
    Reply With Quote  
     

  6. #16  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,556
    Thanks given
    654
    Thanks received
    640
    Rep Power
    358
    Quote Originally Posted by Copyright. View Post
    that's what i said idk whats happening lol..


    Code:
    
    package com.rs.net.decoders;
    
    import com.rs.Settings;
    import com.rs.game.Animation;
    import com.rs.game.Graphics;
    import com.rs.game.World;
    import com.rs.game.WorldObject;
    import com.rs.game.WorldTile;
    import com.rs.game.item.FloorItem;
    import com.rs.game.item.Item;
    import com.rs.game.minigames.clanwars.ClanWars;
    import com.rs.game.minigames.creations.StealingCreation;
    import com.rs.game.minigames.duel.DuelArena;
    import com.rs.game.npc.NPC;
    import com.rs.game.npc.familiar.Familiar;
    import com.rs.game.npc.familiar.Familiar.SpecialAttack;
    import com.rs.game.player.CoordsEvent;
    import com.rs.game.player.Inventory;
    import com.rs.game.player.LogicPacket;
    import com.rs.game.player.Player;
    import com.rs.game.player.PublicChatMessage;
    import com.rs.game.player.QuickChatMessage;
    import com.rs.game.player.Skills;
    import com.rs.game.player.actions.PlayerCombat;
    import com.rs.game.player.actions.PlayerFollow;
    import com.rs.game.player.actions.Summoning;
    import com.rs.game.player.content.Commands;
    import com.rs.game.player.content.FriendChatsManager;
    import com.rs.game.player.content.Magic;
    import com.rs.game.player.content.Notes.Note;
    import com.rs.game.route.RouteFinder;
    import com.rs.game.route.strategy.FixedTileStrategy;
    import com.rs.game.player.content.SkillCapeCustomizer;
    import com.rs.game.player.content.Vote;
    import com.rs.io.InputStream;
    import com.rs.net.Session;
    import com.rs.net.decoders.handlers.ButtonHandler;
    import com.rs.net.decoders.handlers.InventoryOptionsHandler;
    import com.rs.net.decoders.handlers.NPCHandler;
    import com.rs.net.decoders.handlers.ObjectHandler;
    import com.rs.utils.DisplayNames;
    import com.rs.utils.Logger;
    import com.rs.utils.Utils;
    import com.rs.utils.huffman.Huffman;
    
    public final class WorldPacketsDecoder extends Decoder {
    
    	private static final byte[] PACKET_SIZES = new byte[104];
    
    	//WALKING
    	private final static int WALKING_PACKET = 33;
    	private final static int MINI_WALKING_PACKET = 42;
    	
    	//BUTTONS
    	public final static int ACTION_BUTTON1_PACKET = 96;
    	public final static int ACTION_BUTTON2_PACKET = 27;
    	public final static int ACTION_BUTTON3_PACKET = 68;
    	public final static int ACTION_BUTTON4_PACKET = 9;
    	public final static int ACTION_BUTTON5_PACKET = 72;
    	public final static int ACTION_BUTTON6_PACKET = 19;
    	public final static int ACTION_BUTTON7_PACKET = 23;
    	public final static int ACTION_BUTTON8_PACKET = 21;
    	public final static int ACTION_BUTTON9_PACKET = 22;
    	public final static int ACTION_BUTTON10_PACKET = 81;
    	
    	//PLAYER BUTTONS
    	private final static int PLAYER_OPTION_1_PACKET = 66;
    	private final static int PLAYER_OPTION_2_PACKET = 6;
    	private final static int PLAYER_OPTION_3_PACKET = 31;
    	private final static int PLAYER_OPTION_4_PACKET = 89;
    	private final static int PLAYER_OPTION_5_PACKET = 103;
    	private final static int PLAYER_OPTION_6_PACKET = 1;
    	private final static int PLAYER_OPTION_7_PACKET = 51;
    	private final static int PLAYER_OPTION_8_PACKET = 94;
    	private final static int PLAYER_OPTION_9_PACKET = 53;
    	private final static int PLAYER_OPTION_10_PACKET = 70;
    	
    	//OBJECT BUTTONS
    	private final static int OBJECT_CLICK1_PACKET = 75;
    	private final static int OBJECT_CLICK2_PACKET = 93;
    	private final static int OBJECT_CLICK3_PACKET = 38;
    	private final static int OBJECT_CLICK4_PACKET = 32;
    	private final static int OBJECT_CLICK5_PACKET = 48;
    	private final static int OBJECT_EXAMINE_PACKET = 73;
    	
    	
    	//NPC BUTTONS
    	private final static int ATTACK_NPC = 16;
    	private static final int NPC_EXAMINE_PACKET = 3;
    	private final static int NPC_CLICK1_PACKET = 65;
    	private final static int NPC_CLICK2_PACKET = 50;
    	private final static int NPC_CLICK3_PACKET = 77;
    	private final static int NPC_CLICK4_PACKET = 95;
    	
    	//MISC
    	private final static int COMMANDS_PACKET = 85;
    	private final static int DIALOGUE_CONTINUE_PACKET = 49;
    	private final static int SCREEN_PACKET = 84;
    	private final static int CLOSE_INTERFACE_PACKET = 60;
    	private final static int REPORT_ABUSE_PACKET = 100;
    	private final static int ADD_IGNORE_PACKET = 34;
    	private final static int REMOVE_IGNORE_PACKET = 12;
    	private final static int ADD_FRIEND_PACKET = 26;
    	private final static int REMOVE_FRIEND_PACKET = 29;
    	private final static int KEY_PRESSED_PACKET = 28;
    	private final static int INACTIVITY_PACKET = 0;
    	private final static int ENTER_LONGSTRING_PACKET = 87;
    	private final static int ENTER_NAME_PACKET = 80;
    	private final static int ENTER_INTEGER_PACKET = 58;
    	private static final int GRAND_EXCHANGE_PACKET = 17;
    	private final static int COLOR_ID_PACKET = 11;
    	private final static int CHAT_TYPE_PACKET = 30;
    	
    	//INTERFACE COMPONENT INTERACTION
    	private final static int SWITCH_INTERFACE_ITEM_PACKET = 74;
    	private final static int INTERFACE_ON_INTERFACE_PACKET = 4;
    	
    	//FRIENDS CHAT
    	private final static int JOIN_FRIEND_CHAT_PACKET = 71;
    	private final static int CHANGE_FRIEND_CHAT_PACKET = 7;
    	private final static int KICK_FRIEND_CHAT_PACKET = 91;
    	
    	//CHAT TYPES
    	private final static int CHAT_PACKET = 86;
    	private final static int PUBLIC_QUICK_CHAT_PACKET = 64;
    	
    	private final static int SEND_FRIEND_MESSAGE_PACKET = 15;
    	private final static int SEND_FRIEND_QUICK_CHAT_PACKET = 14;
    	
    	private final static int ITEM_TAKE_PACKET = 54;
    	private final static int GROUND_ITEM_EXAMINE = 61;
     
    	private final static int INTERFACE_ON_OBJECT = 98;
    	private final static int INTERFACE_ON_PLAYER = 13;
    	private final static int INTERFACE_ON_NPC = 41;
    	
    	
    
    	public final static int WORLD_MAP_CLICK = 5;
    	private final static int DONE_LOADING_REGION_PACKET = -1;
    	
    	private final static int AFK_PACKET = -1;
    	public final static int RECEIVE_PACKET_COUNT_PACKET = -1;
    	private final static int MOVE_CAMERA_PACKET = 83; 
    	private final static int CLICK_PACKET = 59; 
    	private final static int MOVE_MOUSE_PACKET = -1;
    	private final static int IN_OUT_SCREEN_PACKET = -1;
    	private final static int PING_PACKET = -1;
    
    	private final static int MAGIC_ON_ITEM_PACKET = -1; //ignore this one - shitty configuration
    	
    	
    
    	static {
    		loadPacketSizes();
    	}
    
    	public static void loadPacketSizes() {
    		PACKET_SIZES[0] = 0;
    		PACKET_SIZES[1] = 3;
    		PACKET_SIZES[2] = 4;
    		PACKET_SIZES[3] = 3;
    		PACKET_SIZES[4] = 16;
    		PACKET_SIZES[5] = 4;
    		PACKET_SIZES[6] = 3;
    		PACKET_SIZES[7] = -1;
    		PACKET_SIZES[8] = 7;
    		PACKET_SIZES[9] = 8;
    		PACKET_SIZES[10] = -1;
    		PACKET_SIZES[11] = 2;
    		PACKET_SIZES[12] = -1;
    		PACKET_SIZES[13] = 11;
    		PACKET_SIZES[14] = -1;
    		PACKET_SIZES[15] = -2;
    		PACKET_SIZES[16] = 3;
    		PACKET_SIZES[17] = 2;
    		PACKET_SIZES[18] = 4;
    		PACKET_SIZES[19] = 8;
    		PACKET_SIZES[20] = 3;
    		PACKET_SIZES[21] = 8;
    		PACKET_SIZES[22] = 8;
    		PACKET_SIZES[23] = 8;
    		PACKET_SIZES[24] = 7;
    		PACKET_SIZES[25] = 7;
    		PACKET_SIZES[26] = -1;
    		PACKET_SIZES[27] = 8;
    		PACKET_SIZES[28] = -2;
    		PACKET_SIZES[29] = -1;
    		PACKET_SIZES[30] = 1;
    		PACKET_SIZES[31] = 3;
    		PACKET_SIZES[32] = 9;
    		PACKET_SIZES[33] = 5;
    		PACKET_SIZES[34] = -1;
    		PACKET_SIZES[35] = -2;
    		PACKET_SIZES[36] = -1;
    		PACKET_SIZES[37] = 2;
    		PACKET_SIZES[38] = 9;
    		PACKET_SIZES[39] = -1;
    		PACKET_SIZES[40] = -1;
    		PACKET_SIZES[41] = 11;
    		PACKET_SIZES[42] = 18;
    		PACKET_SIZES[43] = 7;
    		PACKET_SIZES[44] = 9;
    		PACKET_SIZES[45] = 1;
    		PACKET_SIZES[46] = 12;
    		PACKET_SIZES[47] = 4;
    		PACKET_SIZES[48] = 9;
    		PACKET_SIZES[49] = 6;
    		PACKET_SIZES[50] = 3;
    		PACKET_SIZES[51] = 3;
    		PACKET_SIZES[52] = -1;
    		PACKET_SIZES[53] = 3;
    		PACKET_SIZES[54] = 7;
    		PACKET_SIZES[55] = 4;
    		PACKET_SIZES[56] = -2;
    		PACKET_SIZES[57] = 7;
    		PACKET_SIZES[58] = 4;
    		PACKET_SIZES[59] = 6;
    		PACKET_SIZES[60] = 0;
    		PACKET_SIZES[61] = 7;
    		PACKET_SIZES[62] = 1;
    		PACKET_SIZES[63] = 4;
    		PACKET_SIZES[64] = -1;
    		PACKET_SIZES[65] = 3;
    		PACKET_SIZES[66] = 3;
    		PACKET_SIZES[67] = 15;
    		PACKET_SIZES[68] = 8;
    		PACKET_SIZES[69] = -1;
    		PACKET_SIZES[70] = 3;
    		PACKET_SIZES[71] = -1;
    		PACKET_SIZES[72] = 8;
    		PACKET_SIZES[73] = 9;
    		PACKET_SIZES[74] = 16;
    		PACKET_SIZES[75] = 9;
    		PACKET_SIZES[76] = 0;
    		PACKET_SIZES[77] = 3;
    		PACKET_SIZES[78] = -1;
    		PACKET_SIZES[79] = 1;
    		PACKET_SIZES[80] = -1;
    		PACKET_SIZES[81] = 8;
    		PACKET_SIZES[82] = 4;
    		PACKET_SIZES[83] = 4;
    		PACKET_SIZES[84] = 6;
    		PACKET_SIZES[85] = -1;
    		PACKET_SIZES[86] = -1;
    		PACKET_SIZES[87] = -1;
    		PACKET_SIZES[88] = 2;
    		PACKET_SIZES[89] = 3;
    		PACKET_SIZES[90] = -1;
    		PACKET_SIZES[91] = -1;
    		PACKET_SIZES[92] = -2;
    		PACKET_SIZES[93] = 9;
    		PACKET_SIZES[94] = 3;
    		PACKET_SIZES[95] = 3;
    		PACKET_SIZES[96] = 8;
    		PACKET_SIZES[97] = -1;
    		PACKET_SIZES[98] = 17;
    		PACKET_SIZES[99] = -2;
    		PACKET_SIZES[100] = -1;
    		PACKET_SIZES[101] = -2;
    		PACKET_SIZES[102] = -2;
    		PACKET_SIZES[103] = 3;
    	}
    
    	private Player player;
    	private int chatType;
    
    	public WorldPacketsDecoder(Session session, Player player) {
    		super(session);
    		this.player = player;
    	}
    
    	@Override
    	public void decode(InputStream stream) {
    		while (stream.getRemaining() > 0 && session.getChannel().isConnected()
    				&& !player.hasFinished()) {
    			int packetId = stream.readPacket(player);
    			if (packetId >= PACKET_SIZES.length || packetId < 0) {
    				if (Settings.DEBUG)
    					System.out.println("PacketId " + packetId
    							+ " has fake packet id.");
    				break;
    			}
    			int length = PACKET_SIZES[packetId];
    			if (length == -1)
    				length = stream.readUnsignedByte();
    			else if (length == -2)
    				length = stream.readUnsignedShort();
    			else if (length == -3)
    				length = stream.readInt();
    			else if (length == -4) {
    				length = stream.getRemaining();
    				if (Settings.DEBUG)
    					System.out.println("Invalid size for PacketId " + packetId
    							+ ". Size guessed to be " + length);
    			}
    			if (length > stream.getRemaining()) {
    				length = stream.getRemaining();
    				if (Settings.DEBUG)
    					System.out.println("PacketId " + packetId
    							+ " has fake size. - expected size " + length);
    				// break;
    
    			}
    			/*
    			 * System.out.println("PacketId " +packetId+
    			 * " has . - expected size " +length);
    			 */
    			int startOffset = stream.getOffset();
    			processPackets(packetId, stream, length);
    			stream.setOffset(startOffset + length);
    		}
    	}
    
    	public static void decodeLogicPacket(final Player player, LogicPacket packet) {
    		int packetId = packet.getId();
    		InputStream stream = new InputStream(packet.getData());
    		if (packetId == WALKING_PACKET || packetId == MINI_WALKING_PACKET) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion() || player.isDead())
    				return;
    			long currentTime = Utils.currentTimeMillis();
    			if (player.getLockDelay() > currentTime)
    				return;
    			if (player.getFreezeDelay() >= currentTime) {
    				player.getPackets().sendGameMessage("A magical force prevents you from moving.");
    				return;
    			}
    			int length = stream.getLength();
    			/*
    			 * if (packetId == MINI_WALKING_PACKET) length -= 13;
    			 */
    			boolean forceRun = stream.readUnsignedByte() == 1;
    			if (forceRun)
    				player.setRun(forceRun);
    			int baseX = stream.readUnsignedShort();
    			int baseY = stream.readUnsignedShortLE();
                int steps = RouteFinder.findRoute(RouteFinder.WALK_ROUTEFINDER, player.getX(), player.getY(), player.getPlane(), player.getSize(), new FixedTileStrategy(baseX, baseY), true);
    			if (steps > 25)
    	            steps = 25;
    	        player.stopAll();
    	        player.setNextFaceEntity(null);
    	        if (steps > 0) {
    	            int x = 0, y = 0;
    	            for (int step = 0; step < steps; step++) {
    	                x = baseX + stream.readUnsignedByte();
    	                y = baseY + stream.readUnsignedByte();
    	            }
    	            
    	            int[] bufferX = RouteFinder.getLastPathBufferX();
    	            int[] bufferY = RouteFinder.getLastPathBufferY();
    	            int last = -1;
    	            for (int i = steps - 1; i >= 0; i--) {
    	                if (!player.addWalkSteps(bufferX[i], bufferY[i], 25, true))
    	                    break;
    	                last = i;
    	            }
    	            if (last != -1) {
    	                WorldTile tile = new WorldTile(bufferX[last], bufferY[last], player.getPlane());
    	                player.getPackets().sendMinimapFlag(tile.getLocalX(player.getLastLoadedMapRegionTile(), player.getMapSize()), tile.getLocalY(player.getLastLoadedMapRegionTile(), player.getMapSize()));
    	            } else {
    	                player.getPackets().sendResetMinimapFlag();
    	            }
    	        }
    		} else if (packetId == INTERFACE_ON_OBJECT) {
    			boolean forceRun = stream.readByte128() == 1;
    			int itemId = stream.readShortLE128();
    			int y = stream.readShortLE128();
    			int objectId = stream.readIntV2();
    			int interfaceHash = stream.readInt();
    			final int interfaceId = interfaceHash >> 16;
    			int slot = stream.readShortLE();
    			int x = stream.readShort128();
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			long currentTime = Utils.currentTimeMillis();
    			if (player.getLockDelay() >= currentTime || player.getEmotesManager().getNextEmoteEnd() >= currentTime)
    				return;
    			final WorldTile tile = new WorldTile(x, y, player.getPlane());
    			int regionId = tile.getRegionId();
    			if (!player.getMapRegionsIds().contains(regionId))
    				return;
    			WorldObject mapObject = World.getRegion(regionId).getObject(objectId, tile);
    			if (mapObject == null || mapObject.getId() != objectId)
    				return;
    			final WorldObject object = !player.isAtDynamicRegion() ? mapObject : new WorldObject(objectId, mapObject.getType(), mapObject.getRotation(), x, y, player.getPlane());
    			final Item item = player.getInventory().getItem(slot);
    			if (player.isDead() || Utils.getInterfaceDefinitionsSize() <= interfaceId)
    				return;
    			if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    			if (!player.getInterfaceManager().containsInterface(interfaceId))
    				return;
    			if (item == null || item.getId() != itemId)
    				return;
    			player.stopAll(false); // false
    			if(forceRun)
    				player.setRun(forceRun);
    			switch (interfaceId) {
    			case Inventory.INVENTORY_INTERFACE: // inventory
    				ObjectHandler.handleItemOnObject(player, object, interfaceId, item);
    				break;
    			}
    		} else if (packetId == PLAYER_OPTION_2_PACKET) {
    			player.sm("TEST.");
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    				    || player.isDead())
    				return;
    			    boolean unknown = stream.readByte() == 1;
    			    int playerIndex = stream.readUnsignedShort128();
    			    Player p2 = World.getPlayers().get(playerIndex);
    			    if (p2 == null || p2.isDead() || p2.hasFinished()
    				    || !player.getMapRegionsIds().contains(p2.getRegionId()))
    				return;
    			    if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    			    if (player.getControlerManager().getControler() instanceof DuelArena)
    				return;
    			    player.stopAll(false);
    			    player.getActionManager().setAction(new PlayerFollow(p2));
    		} else if (packetId == PLAYER_OPTION_4_PACKET) {
    			player.sm("TEST.");
    			 boolean unknown = stream.readByte() == 1;
    			    int playerIndex = stream.readUnsignedShort128();
    			    Player p2 = World.getPlayers().get(playerIndex);
    			    if (p2 == null || p2.isDead() || p2.hasFinished()
    				    || !player.getMapRegionsIds().contains(p2.getRegionId())
    				    || player.getLockDelay() >= Utils.currentTimeMillis()
    				    || player == p2)
    				return;
    			    player.stopAll(false);
    			    player.faceEntity(p2);
    			    /*if (player.checkTotalLevel(300) < 300) {
    				player.sendMessage("You need atleast a total level of 300 to trade.");
    				return;
    			    }*/
    			    if (p2.getInterfaceManager().containsScreenInter()) {
    				player.getPackets()
    					.sendGameMessage("The other player is busy.");
    				return;
    			    }
    			    if (player.getX() == p2.getX() && player.getY() == p2.getY()) {
    				if (!player.addWalkSteps(player.getX() - 1, player.getY(), 1))
    				    if (!player.addWalkSteps(player.getX() + 1, player.getY(),
    					    1))
    					if (!player.addWalkSteps(player.getX(),
    						player.getY() + 1, 1))
    					    player.addWalkSteps(player.getX(),
    						    player.getY() - 1, 1);
    			    }
    			    if (player.getX() == p2.getX() && player.getY() == p2.getY()) {
    				player.getPackets().sendGameMessage("Unable to trade here.");
    				return;
    			    }
    			    if (!p2.withinDistance(player, 14)) {
    				player.getPackets().sendGameMessage(
    					"Unable to find target " + p2.getDisplayName());
    				return;
    			    }
    			    if (p2.getTemporaryAttributtes().get("TradeTarget") == player) {
    				p2.getTemporaryAttributtes().remove("TradeTarget");
    				player.getTrade().openTrade(p2);
    				p2.getTrade().openTrade(player);
    				return;
    			    }
    			    player.getTemporaryAttributtes().put("TradeTarget", p2);
    			    player.getPackets().sendGameMessage(
    				    "Sending " + p2.getDisplayName() + " a request...");
    			    p2.getPackets().sendTradeRequestMessage(player);
    		} else if (packetId == PLAYER_OPTION_1_PACKET) {
    			  if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					    || player.isDead())
    					return;
    				    boolean unknown = stream.readByte() == 1;
    				    int playerIndex = stream.readUnsignedShort128();
    				    Player p2 = World.getPlayers().get(playerIndex);
    				    if (p2 == null || p2.isDead() || p2.hasFinished()
    					    || !player.getMapRegionsIds().contains(p2.getRegionId()))
    					return;
    				    if (player.getLockDelay() > Utils.currentTimeMillis()
    					    || !player.getControlerManager().canPlayerOption1(p2))
    					return;
    				    if (!player.isCanPvp())
    					return;
    				    if (!player.getControlerManager().canAttack(p2))
    					return;
    				    if (!player.isCanPvp() || !p2.isCanPvp()) {
    					player.getPackets()
    						.sendGameMessage(
    							"You can only attack players in a player-vs-player area.");
    					return;
    				    }
    				    if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
    					if (player.getAttackedBy() != p2
    						&& player.getAttackedByDelay() > Utils
    							.currentTimeMillis()) {
    					    player.getPackets().sendGameMessage(
    						    "You are already in combat.");
    					    return;
    					}
    					if (p2.getAttackedBy() != player
    						&& p2.getAttackedByDelay() > Utils.currentTimeMillis()) {
    					    if (p2.getAttackedBy() instanceof NPC) {
    						p2.setAttackedBy(player); // changes enemy to player,
    						// player has priority over
    						// npc on single areas
    					    } else {
    						player.getPackets().sendGameMessage(
    							"That player is already in combat.");
    						return;
    					    }
    					}
    				    }
    				    player.stopAll(false);
    				    player.getActionManager().setAction(new PlayerCombat(p2));
    		} else if (packetId == ATTACK_NPC) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead()) {
    				return;
    			}
    			if (player.getLockDelay() > Utils.currentTimeMillis()) {
    				return;
    			}
    			int npcIndex = stream.readUnsignedShort128();
    			boolean forceRun = stream.read128Byte() == 1;
    			if(forceRun)
    				player.setRun(forceRun);
    			NPC npc = World.getNPCs().get(npcIndex);
    			if (npc == null || npc.isDead() || npc.hasFinished()
    					|| !player.getMapRegionsIds().contains(npc.getRegionId())
    					|| !npc.getDefinitions().hasAttackOption()) {
    				return;
    			}
    			if (!player.getControlerManager().canAttack(npc)) {
    				return;
    			}
    			if (npc instanceof Familiar) {
    				Familiar familiar = (Familiar) npc;
    				if (familiar == player.getFamiliar()) {
    					player.getPackets().sendGameMessage(
    							"You can't attack your own familiar.");
    					return;
    				}
    				if (!familiar.canAttack(player)) {
    					player.getPackets().sendGameMessage(
    							"You can't attack this npc.");
    					return;
    				}
    			} else if (!npc.isForceMultiAttacked()) {
    				if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
    					if (player.getAttackedBy() != npc
    							&& player.getAttackedByDelay() > Utils
    							.currentTimeMillis()) {
    						player.getPackets().sendGameMessage(
    								"You are already in combat.");
    						return;
    					}
    					if (npc.getAttackedBy() != player
    							&& npc.getAttackedByDelay() > Utils
    							.currentTimeMillis()) {
    						player.getPackets().sendGameMessage(
    								"This npc is already in combat.");
    						return;
    					}
    				}
    			}
    			player.stopAll(false);
    			player.getActionManager().setAction(new PlayerCombat(npc));
    		} else if (packetId == INTERFACE_ON_PLAYER) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk1 = stream.readUnsignedShort();
    			int playerIndex = stream.readUnsignedShort();
    			int interfaceHash = stream.readIntV2();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk2 = stream.readUnsignedShortLE128();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean unknown = stream.read128Byte() == 1;
    			int interfaceId = interfaceHash >> 16;
    			int componentId = interfaceHash - (interfaceId << 16);
    			if (Utils.getInterfaceDefinitionsSize() <= interfaceId)
    				return;
    			if (!player.getInterfaceManager().containsInterface(interfaceId))
    				return;
    			if (componentId == 65535)
    				componentId = -1;
    			if (componentId != -1
    					&& Utils.getInterfaceDefinitionsComponentsSize(interfaceId) <= componentId)
    				return;
    			Player p2 = World.getPlayers().get(playerIndex);
    			if (p2 == null || p2.isDead() || p2.hasFinished()
    					|| !player.getMapRegionsIds().contains(p2.getRegionId()))
    				return;
    			player.stopAll(false);
    			switch (interfaceId) {
    			case 662:
    			case 747:
    				if (player.getFamiliar() == null)
    					return;
    				player.resetWalkSteps();
    				if ((interfaceId == 747 && componentId == 15)
    						|| (interfaceId == 662 && componentId == 65)
    						|| (interfaceId == 662 && componentId == 74)
    						|| interfaceId == 747 && componentId == 18) {
    					if ((interfaceId == 662 && componentId == 74
    							|| interfaceId == 747 && componentId == 24 || interfaceId == 747
    							&& componentId == 18)) {
    						if (player.getFamiliar().getSpecialAttack() != SpecialAttack.ENTITY)
    							return;
    					}
    					if (!player.isCanPvp() || !p2.isCanPvp()) {
    						player.getPackets()
    						.sendGameMessage(
    								"You can only attack players in a player-vs-player area.");
    						return;
    					}
    					if (!player.getFamiliar().canAttack(p2)) {
    						player.getPackets()
    						.sendGameMessage(
    								"You can only use your familiar in a multi-zone area.");
    						return;
    					} else {
    						player.getFamiliar().setSpecial(
    								interfaceId == 662 && componentId == 74
    								|| interfaceId == 747
    								&& componentId == 18);
    						player.getFamiliar().setTarget(p2);
    					}
    				}
    				break;
    			case 193:
    				switch (componentId) {
    				case 28:
    				case 32:
    				case 24:
    				case 20:
    				case 30:
    				case 34:
    				case 26:
    				case 22:
    				case 29:
    				case 33:
    				case 25:
    				case 21:
    				case 31:
    				case 35:
    				case 27:
    				case 23:
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(p2
    								.getCoordFaceX(p2.getSize()), p2
    								.getCoordFaceY(p2.getSize()), p2.getPlane()));
    						if (!player.getControlerManager().canAttack(p2))
    							return;
    						if (!player.isCanPvp() || !p2.isCanPvp()) {
    							player.getPackets()
    							.sendGameMessage(
    									"You can only attack players in a player-vs-player area.");
    							return;
    						}
    						if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
    							if (player.getAttackedBy() != p2
    									&& player.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								player.getPackets()
    								.sendGameMessage(
    										"That "
    												+ (player
    														.getAttackedBy() instanceof Player ? "player"
    																: "npc")
    																+ " is already in combat.");
    								return;
    							}
    							if (p2.getAttackedBy() != player
    									&& p2.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								if (p2.getAttackedBy() instanceof NPC) {
    									p2.setAttackedBy(player); // changes enemy
    									// to player,
    									// player has
    									// priority over
    									// npc on single
    									// areas
    								} else {
    									player.getPackets()
    									.sendGameMessage(
    											"That player is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager()
    						.setAction(new PlayerCombat(p2));
    					}
    					break;
    				}
    			case 192:
    				switch (componentId) {
    				case 25: // air strike
    				case 28: // water strike
    				case 30: // earth strike
    				case 32: // fire strike
    				case 34: // air bolt
    				case 39: // water bolt
    				case 42: // earth bolt
    				case 45: // fire bolt
    				case 49: // air blast
    				case 52: // water blast
    				case 58: // earth blast
    				case 63: // fire blast
    				case 70: // air wave
    				case 73: // water wave
    				case 77: // earth wave
    				case 80: // fire wave
    				case 86: // teleblock
    				case 84: // air surge
    				case 87: // water surge
    				case 89: // earth surge
    				case 91: // fire surge
    				case 99: // storm of armadyl
    				case 36: // bind
    				case 66: // Sara Strike
    				case 67: // Guthix Claws
    				case 68: // Flame of Zammy
    				case 55: // snare
    				case 81: // entangle
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(p2
    								.getCoordFaceX(p2.getSize()), p2
    								.getCoordFaceY(p2.getSize()), p2.getPlane()));
    						if (!player.getControlerManager().canAttack(p2))
    							return;
    						if (!player.isCanPvp() || !p2.isCanPvp()) {
    							player.getPackets()
    							.sendGameMessage(
    									"You can only attack players in a player-vs-player area.");
    							return;
    						}
    						if (!p2.isAtMultiArea() || !player.isAtMultiArea()) {
    							if (player.getAttackedBy() != p2
    									&& player.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								player.getPackets()
    								.sendGameMessage(
    										"That "
    												+ (player
    														.getAttackedBy() instanceof Player ? "player"
    																: "npc")
    																+ " is already in combat.");
    								return;
    							}
    							if (p2.getAttackedBy() != player
    									&& p2.getAttackedByDelay() > Utils
    									.currentTimeMillis()) {
    								if (p2.getAttackedBy() instanceof NPC) {
    									p2.setAttackedBy(player); // changes enemy
    									// to player,
    									// player has
    									// priority over
    									// npc on single
    									// areas
    								} else {
    									player.getPackets()
    									.sendGameMessage(
    											"That player is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager()
    						.setAction(new PlayerCombat(p2));
    					}
    					break;
    				}
    				break;
    			}
    			if (Settings.DEBUG)
    				System.out.println("Spell:" + componentId);
    		} else if (packetId == INTERFACE_ON_NPC) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			if (player.getLockDelay() > Utils.currentTimeMillis())
    				return;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean unknown = stream.readByte() == 1;
    			int interfaceHash = stream.readInt();
    			int npcIndex = stream.readUnsignedShortLE();
    			int interfaceSlot = stream.readUnsignedShortLE128();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk2 =stream.readUnsignedShortLE();
    			int interfaceId = interfaceHash >> 16;
    			int componentId = interfaceHash - (interfaceId << 16);
    			if (Utils.getInterfaceDefinitionsSize() <= interfaceId)
    				return;
    			if (!player.getInterfaceManager().containsInterface(interfaceId))
    				return;
    			if (componentId == 65535)
    				componentId = -1;
    			if (componentId != -1
    					&& Utils.getInterfaceDefinitionsComponentsSize(interfaceId) <= componentId)
    				return;
    			NPC npc = World.getNPCs().get(npcIndex);
    			if (npc == null || npc.isDead() || npc.hasFinished()
    					|| !player.getMapRegionsIds().contains(npc.getRegionId()))
    				return;
    			player.stopAll(false);
    			if (interfaceId != Inventory.INVENTORY_INTERFACE) {
    				if (!npc.getDefinitions().hasAttackOption()) {
    					player.getPackets().sendGameMessage(
    							"You can't attack this npc.");
    					return;
    				}
    			}
    			switch (interfaceId) {
    			case Inventory.INVENTORY_INTERFACE:
    				Item item = player.getInventory().getItem(interfaceSlot);
    				if (item == null || !player.getControlerManager().processItemOnNPC(npc, item))
    					return;
    				InventoryOptionsHandler.handleItemOnNPC(player, npc, item);
    				break;
    			case 1165:
    				Summoning.attackDreadnipTarget(npc, player);
    				break;
    			case 662:
    			case 747:
    				if (player.getFamiliar() == null)
    					return;
    				player.resetWalkSteps();
    				if ((interfaceId == 747 && componentId == 15)
    						|| (interfaceId == 662 && componentId == 65)
    						|| (interfaceId == 662 && componentId == 74)
    						|| interfaceId == 747 && componentId == 18
    						|| interfaceId == 747 && componentId == 24) {
    					if ((interfaceId == 662 && componentId == 74 || interfaceId == 747
    							&& componentId == 18)) {
    						if (player.getFamiliar().getSpecialAttack() != SpecialAttack.ENTITY)
    							return;
    					}
    					if(npc instanceof Familiar) {
    						Familiar familiar = (Familiar) npc;
    						if (familiar == player.getFamiliar()) {
    							player.getPackets().sendGameMessage("You can't attack your own familiar.");
    							return;
    						}
    						if (!player.getFamiliar().canAttack(familiar.getOwner())) {
    							player.getPackets().sendGameMessage("You can only attack players in a player-vs-player area.");
    							return;
    						}
    					}
    					if (!player.getFamiliar().canAttack(npc)) {
    						player.getPackets()
    						.sendGameMessage(
    								"You can only use your familiar in a multi-zone area.");
    						return;
    					} else {
    						player.getFamiliar().setSpecial(
    								interfaceId == 662 && componentId == 74
    								|| interfaceId == 747
    								&& componentId == 18);
    						player.getFamiliar().setTarget(npc);
    					}
    				}
    				break;
    			case 193:
    				switch (componentId) {
    				case 28:
    				case 32:
    				case 24:
    				case 20:
    				case 30:
    				case 34:
    				case 26:
    				case 22:
    				case 29:
    				case 33:
    				case 25:
    				case 21:
    				case 31:
    				case 35:
    				case 27:
    				case 23:
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(npc
    								.getCoordFaceX(npc.getSize()), npc
    								.getCoordFaceY(npc.getSize()), npc.getPlane()));
    						if (!player.getControlerManager().canAttack(npc))
    							return;
    						if (npc instanceof Familiar) {
    							Familiar familiar = (Familiar) npc;
    							if (familiar == player.getFamiliar()) {
    								player.getPackets().sendGameMessage(
    										"You can't attack your own familiar.");
    								return;
    							}
    							if (!familiar.canAttack(player)) {
    								player.getPackets().sendGameMessage(
    										"You can't attack this npc.");
    								return;
    							}
    						} else if (!npc.isForceMultiAttacked()) {
    							if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
    								if (player.getAttackedBy() != npc
    										&& player.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"You are already in combat.");
    									return;
    								}
    								if (npc.getAttackedBy() != player
    										&& npc.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"This npc is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager().setAction(
    								new PlayerCombat(npc));
    					}
    					break;
    				}
    			case 192:
    				switch (componentId) {
    				case 25: // air strike
    				case 28: // water strike
    				case 30: // earth strike
    				case 32: // fire strike
    				case 34: // air bolt
    				case 39: // water bolt
    				case 42: // earth bolt
    				case 45: // fire bolt
    				case 49: // air blast
    				case 52: // water blast
    				case 58: // earth blast
    				case 63: // fire blast
    				case 70: // air wave
    				case 73: // water wave
    				case 77: // earth wave
    				case 80: // fire wave
    				case 84: // air surge
    				case 87: // water surge
    				case 89: // earth surge
    				case 66: // Sara Strike
    				case 67: // Guthix Claws
    				case 68: // Flame of Zammy
    				case 93:
    				case 91: // fire surge
    				case 99: // storm of Armadyl
    				case 36: // bind
    				case 55: // snare
    				case 81: // entangle
    					if (Magic.checkCombatSpell(player, componentId, 1, false)) {
    						player.setNextFaceWorldTile(new WorldTile(npc
    								.getCoordFaceX(npc.getSize()), npc
    								.getCoordFaceY(npc.getSize()), npc.getPlane()));
    						if (!player.getControlerManager().canAttack(npc))
    							return;
    						if (npc instanceof Familiar) {
    							Familiar familiar = (Familiar) npc;
    							if (familiar == player.getFamiliar()) {
    								player.getPackets().sendGameMessage(
    										"You can't attack your own familiar.");
    								return;
    							}
    							if (!familiar.canAttack(player)) {
    								player.getPackets().sendGameMessage(
    										"You can't attack this npc.");
    								return;
    							}
    						} else if (!npc.isForceMultiAttacked()) {
    							if (!npc.isAtMultiArea() || !player.isAtMultiArea()) {
    								if (player.getAttackedBy() != npc
    										&& player.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"You are already in combat.");
    									return;
    								}
    								if (npc.getAttackedBy() != player
    										&& npc.getAttackedByDelay() > Utils
    										.currentTimeMillis()) {
    									player.getPackets().sendGameMessage(
    											"This npc is already in combat.");
    									return;
    								}
    							}
    						}
    						player.getActionManager().setAction(
    								new PlayerCombat(npc));
    					}
    					break;
    				}
    				break;
    			}
    			if (Settings.DEBUG)
    				System.out.println("Spell:" + componentId);
    		} else if (packetId == NPC_CLICK1_PACKET)
    			NPCHandler.handleOption1(player, stream);
    		else if (packetId == NPC_CLICK2_PACKET)
    			NPCHandler.handleOption2(player, stream);
    		else if (packetId == NPC_CLICK3_PACKET)
    			NPCHandler.handleOption3(player, stream);
    		else if (packetId == OBJECT_CLICK1_PACKET)
    			ObjectHandler.handleOption(player, stream, 1);
    		else if (packetId == OBJECT_CLICK2_PACKET)
    			ObjectHandler.handleOption(player, stream, 2);
    		else if (packetId == OBJECT_CLICK3_PACKET)
    			ObjectHandler.handleOption(player, stream, 3);
    		else if (packetId == OBJECT_CLICK4_PACKET)
    			ObjectHandler.handleOption(player, stream, 4);
    		else if (packetId == OBJECT_CLICK5_PACKET)
    			ObjectHandler.handleOption(player, stream, 5);
    		else if (packetId == ITEM_TAKE_PACKET) {
    			if (!player.hasStarted() || !player.clientHasLoadedMapRegion()
    					|| player.isDead())
    				return;
    			long currentTime = Utils.currentTimeMillis();
    			if (player.getLockDelay() > currentTime)
    				// || player.getFreezeDelay() >= currentTime)
    				return;
    			int y = stream.readUnsignedShort();
    			int x = stream.readUnsignedShortLE();
    			final int id = stream.readUnsignedShort();
    			boolean forceRun = stream.read128Byte() == 1;
    			final WorldTile tile = new WorldTile(x, y, player.getPlane());
    			final int regionId = tile.getRegionId();
    			if (!player.getMapRegionsIds().contains(regionId))
    				return;
    			final FloorItem item = World.getRegion(regionId).getGroundItem(id,
    					tile, player);
    			if (item == null)
    				return;
    			player.stopAll(false);
    			if(forceRun)
    				player.setRun(forceRun);
    			player.setCoordsEvent(new CoordsEvent(tile, new Runnable() {
    				@Override
    				public void run() {
    					final FloorItem item = World.getRegion(regionId)
    							.getGroundItem(id, tile, player);
    					if (item == null)
    						return;
    			/*		if (player.getRights() > 0 || player.isSupporter()) 
    						player.getPackets().sendGameMessage("This item was dropped by [Username] "+item.getOwner().getUsername()+ " [DiplayName] "+item.getOwner().getDisplayName());
    			*/		player.setNextFaceWorldTile(tile);
    					player.addWalkSteps(tile.getX(), tile.getY(), 1);
    					World.removeGroundItem(player, item);
    				}
    			}, 1, 1));
    		}
    	}
    
    	public void processPackets(final int packetId, InputStream stream,
    			int length) {
    		player.setPacketsDecoderPing(Utils.currentTimeMillis());
    		if (packetId == PING_PACKET) {
    			// kk we ping :)
    		} else if (packetId == MOVE_MOUSE_PACKET) {
    			// USELESS PACKET
    		} else if (packetId == RECEIVE_PACKET_COUNT_PACKET) {
    			// interface packets
    			stream.readInt();
    		} else if (packetId == INTERFACE_ON_INTERFACE_PACKET) {
    			InventoryOptionsHandler.handleItemOnItem(player, stream);
    		} else if (packetId == MAGIC_ON_ITEM_PACKET) {
    			int inventoryInter = stream.readInt() >> 16;
    			int itemId = stream.readShort128();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int junk = stream.readShort();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int itemSlot = stream.readShortLE();
    			int interfaceSet = stream.readIntV1();
    			int spellId = interfaceSet & 0xFFF;
    			int magicInter = interfaceSet >> 16;
    			if (inventoryInter == 149 && magicInter == 192) {
    				switch (spellId) {
    				case 59:// High Alch
    					if (player.getSkills().getLevel(Skills.MAGIC) < 55) {
    						player.getPackets()
    						.sendGameMessage(
    								"You do not have the required level to cast this spell.");
    						return;
    					}
    					if (itemId == 995) {
    						player.getPackets().sendGameMessage(
    								"You can't alch this!");
    						return;
    					}
    					if (player.getEquipment().getWeaponId() == 1401
    							|| player.getEquipment().getWeaponId() == 3054
    							|| player.getEquipment().getWeaponId() == 19323) {
    						if (!player.getInventory().containsItem(561, 1)) {
    							player.getPackets()
    							.sendGameMessage(
    									"You do not have the required runes to cast this spell.");
    							return;
    						}
    						player.setNextAnimation(new Animation(9633));
    						player.setNextGraphics(new Graphics(112));
    						player.getInventory().deleteItem(561, 1);
    						player.getInventory().deleteItem(itemId, 1);
    						player.getInventory()
    						.addItem(
    								995,
    								new Item(itemId, 1).getDefinitions()
    								.getValue() >> 6);
    					} else {
    						if (!player.getInventory().containsItem(561, 1)
    								|| !player.getInventory().containsItem(554, 5)) {
    							player.getPackets()
    							.sendGameMessage(
    									"You do not have the required runes to cast this spell.");
    							return;
    						}
    						player.setNextAnimation(new Animation(713));
    						player.setNextGraphics(new Graphics(113));
    						player.getInventory().deleteItem(561, 1);
    						player.getInventory().deleteItem(554, 5);
    						player.getInventory().deleteItem(itemId, 1);
    						player.getInventory()
    						.addItem(
    								995,
    								new Item(itemId, 1).getDefinitions()
    								.getValue() >> 6);
    					}
    					break;
    				default:
    					System.out.println("Spell:" + spellId + ", Item:" + itemId);
    				}
    				System.out.println("Spell:" + spellId + ", Item:" + itemId);
    			}
    		} else if (packetId == AFK_PACKET) {
    			player.getSession().getChannel().close();
    		} else if (packetId == CLOSE_INTERFACE_PACKET) {
    			if (player.hasStarted() && !player.hasFinished() && !player.isRunning()) { //used for old welcome screen
    				player.run();
    				return;
    			}
    			player.stopAll();
    		} else if (packetId == MOVE_CAMERA_PACKET) {
    			// not using it atm
    			stream.readUnsignedShort();
    			stream.readUnsignedShort();
    		} else if (packetId == IN_OUT_SCREEN_PACKET) {
    			// not using this check because not 100% efficient
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean inScreen = stream.readByte() == 1;
    		} else if (packetId == SCREEN_PACKET) {
    			int displayMode = stream.readUnsignedByte();
    			player.setScreenWidth(stream.readUnsignedShort());
    			player.setScreenHeight(stream.readUnsignedShort());
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean switchScreenMode = stream.readUnsignedByte() == 1;
    			if (!player.hasStarted() || player.hasFinished()
    					|| displayMode == player.getDisplayMode()
    					|| !player.getInterfaceManager().containsInterface(742))
    				return;
    			player.setDisplayMode(displayMode);
    			player.getInterfaceManager().removeAll();
    			player.getInterfaceManager().sendInterfaces();
    			player.getInterfaceManager().sendInterface(742);
    		} else if (packetId == CLICK_PACKET) {
    			int mouseHash = stream.readShortLE128();
    			int mouseButton = mouseHash >> 15;
    			int time = mouseHash - (mouseButton << 15); // time
    			int positionHash = stream.readIntV1();
    			int y = positionHash >> 16; // y;
    			int x = positionHash - (y << 16); // x
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean clicked;
    			// mass click or stupid autoclicker, lets stop lagg
    			if (time <= 1 || x < 0 || x > player.getScreenWidth() || y < 0
    					|| y > player.getScreenHeight()) {
    				// player.getSession().getChannel().close();
    				clicked = false;
    				return;
    			}
    			clicked = true;
    		} else if (packetId == DIALOGUE_CONTINUE_PACKET) {
    			int interfaceHash = stream.readInt();
    			int junk = stream.readShort128();
    			int interfaceId = interfaceHash >> 16;
    			int buttonId = (interfaceHash & 0xFF);
    			if (Utils.getInterfaceDefinitionsSize() <= interfaceId) {
    				// hack, or server error or client error
    				// player.getSession().getChannel().close();
    				return;
    			}
    			if (!player.isRunning()
    					|| !player.getInterfaceManager().containsInterface(
    							interfaceId))
    				return;
    			if(Settings.DEBUG)
    				Logger.log(this, "Dialogue: "+interfaceId+", "+buttonId+", "+junk);
    			int componentId = interfaceHash - (interfaceId << 16);
    			player.getDialogueManager().continueDialogue(interfaceId,
    					componentId);
    		} else if (packetId == WORLD_MAP_CLICK) {
    			int coordinateHash = stream.readInt();
    			int x = coordinateHash >> 14;
    			int y = coordinateHash & 0x3fff;
    			int plane = coordinateHash >> 28;
                Integer hash  =  (Integer)player.getTemporaryAttributtes().get("worldHash");
    			if (hash == null || coordinateHash != hash)
    				player.getTemporaryAttributtes().put("worldHash", coordinateHash);
    			else {
    				player.getTemporaryAttributtes().remove("worldHash");
    				player.getHintIconsManager().addHintIcon(x, y, plane, 20, 0, 2, -1, true);
    				player.getPackets().sendConfig(1159, coordinateHash);
                }
    		} else if (packetId == ACTION_BUTTON1_PACKET
    				|| packetId == ACTION_BUTTON2_PACKET
    				|| packetId == ACTION_BUTTON4_PACKET
    				|| packetId == ACTION_BUTTON5_PACKET
    				|| packetId == ACTION_BUTTON6_PACKET
    				|| packetId == ACTION_BUTTON7_PACKET
    				|| packetId == ACTION_BUTTON8_PACKET
    				|| packetId == ACTION_BUTTON3_PACKET
    				|| packetId == ACTION_BUTTON9_PACKET
    				|| packetId == ACTION_BUTTON10_PACKET) {
    			ButtonHandler.handleButtons(player, stream, packetId);
    		} else if (packetId == ENTER_NAME_PACKET) {
    			if (!player.isRunning() || player.isDead())
    				return;
    			String value = stream.readString();
    			if (value.equals(""))
    				return;
    			if (player.getInterfaceManager().containsInterface(1108)) 
    				player.getFriendsIgnores().setChatPrefix(value);
    			else if (player.getTemporaryAttributtes().get("yellcolor") == Boolean.TRUE) {
    				if(value.length() != 6) {
    					player.getDialogueManager().startDialogue("SimpleMessage", "The HEX yell color you wanted to pick cannot be longer and shorter then 6.");
    				} else if(Utils.containsInvalidCharacter(value) || value.contains("_")) {
    					player.getDialogueManager().startDialogue("SimpleMessage", "The requested yell color can only contain numeric and regular characters.");
    				} else {
    					player.setYellColor(value);
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your yell color has been changed to <col="+player.getYellColor()+">"+player.getYellColor()+"</col>.");
    				}
    				player.getTemporaryAttributtes().put("yellcolor", Boolean.FALSE);
    			}
    			else if (player.getTemporaryAttributtes().get("entering_note") == Boolean.TRUE) {
    				player.getNotes().add(new Note(value, 1));
    				player.getNotes().refresh();
    				player.getTemporaryAttributtes().put("entering_note", Boolean.FALSE);
    				return;
    			} else if (player.getTemporaryAttributtes().get("editing_note") == Boolean.TRUE) {
    				Note note = (Note) player.getTemporaryAttributtes().get("curNote");
    				player.getNotes().getNotes().get(player.getNotes().getNotes().indexOf(note));
    				player.getNotes().refresh();
    				player.getTemporaryAttributtes().put("editing_note", Boolean.FALSE);
    			} else if (player.getTemporaryAttributtes().get("view_name") == Boolean.TRUE) {
    				player.getTemporaryAttributtes().remove("view_name");
    				Player other = World.getPlayerByDisplayName(value);
    				if (other == null) {
    					player.getPackets().sendGameMessage("Couldn't find player.");
    					return;
    				}
    				ClanWars clan = other.getCurrentFriendChat() != null ? other.getCurrentFriendChat().getClanWars() : null;
    				if (clan == null) {
    					player.getPackets().sendGameMessage("This player's clan is not in war.");
    					return;
    				}
    				if (clan.getSecondTeam().getOwnerDisplayName() != other.getCurrentFriendChat().getOwnerDisplayName()) {
    					player.getTemporaryAttributtes().put("view_prefix", 1);
    				}
    				player.getTemporaryAttributtes().put("view_clan", clan);
    				ClanWars.enter(player);
    			} else if (player.getTemporaryAttributtes().remove("setdisplay") != null) {
    				if(Utils.invalidAccountName(Utils
    						.formatPlayerNameForProtocol(value))) {
    					player.getPackets().sendGameMessage("Invalid name!");
    					return;
    				}
    				if(!DisplayNames.setDisplayName(player, value)) {
    					player.getPackets().sendGameMessage("Name already in use!");
    					return;
    				}
    				player.getPackets().sendGameMessage("Changed display name!");
    			} else if (player.getTemporaryAttributtes().remove("checkvoteinput") != null) 
    				Vote.checkVote(player, value);
    		} else if (packetId == ENTER_INTEGER_PACKET) {
    			if (!player.isRunning() || player.isDead())
    				return;
    			int value = stream.readInt();
    			if ((player.getInterfaceManager().containsInterface(762) && player
    					.getInterfaceManager().containsInterface(763))
    					|| player.getInterfaceManager().containsInterface(11)) {
    				if (value < 0)
    					return;
    				Integer bank_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("bank_item_X_Slot");
    				if (bank_item_X_Slot == null)
    					return;
    				player.getBank().setLastX(value);
    				player.getBank().refreshLastX();
    				if (player.getTemporaryAttributtes().remove("bank_isWithdraw") != null)
    					player.getBank().withdrawItem(bank_item_X_Slot, value);
    				else
    					player.getBank()
    							.depositItem(
    									bank_item_X_Slot,
    									value,
    									player.getInterfaceManager()
    											.containsInterface(11) ? false
    											: true);
    			} else if (player.getInterfaceManager().containsInterface(206)
    					&& player.getInterfaceManager().containsInterface(207)) {
    				if (value < 0)
    					return;
    				Integer pc_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("pc_item_X_Slot");
    				if (pc_item_X_Slot == null)
    					return;
    				if (player.getTemporaryAttributtes().remove("pc_isRemove") != null)
    					player.getPriceCheckManager().removeItem(pc_item_X_Slot,
    							value);
    				else
    					player.getPriceCheckManager()
    					.addItem(pc_item_X_Slot, value);
    			} else if (player.getInterfaceManager().containsInterface(671)
    					&& player.getInterfaceManager().containsInterface(665)) {
    				if (player.getFamiliar() == null
    						|| player.getFamiliar().getBob() == null)
    					return;
    				if (value < 0)
    					return;
    				Integer bob_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("bob_item_X_Slot");
    				if (bob_item_X_Slot == null)
    					return;
    				if (player.getTemporaryAttributtes().remove("bob_isRemove") != null)
    					player.getFamiliar().getBob()
    					.removeItem(bob_item_X_Slot, value);
    				else
    					player.getFamiliar().getBob()
    					.addItem(bob_item_X_Slot, value);
    			} else if (player.getInterfaceManager().containsInterface(335)
    					&& player.getInterfaceManager().containsInterface(336)) {
    				if (value < 0)
    					return;
    				Integer trade_item_X_Slot = (Integer) player
    						.getTemporaryAttributtes().remove("trade_item_X_Slot");
    				if (trade_item_X_Slot == null)
    					return;
    				if (player.getTemporaryAttributtes().remove("trade_isRemove") != null)
    					player.getTrade().removeItem(trade_item_X_Slot, value);
    				else
    					player.getTrade().addItem(trade_item_X_Slot, value);
    			} else if (player.getTemporaryAttributtes().get("skillId") != null) {
    				if (player.getEquipment().wearingArmour()) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "You cannot do this while having armour on!");
    					return;
    				}
    				int skillId = (Integer) player.getTemporaryAttributtes()
    						.remove("skillId");
    				if (skillId == Skills.HITPOINTS && value <= 9)
    					value = 10;
    				else if (value < 1)
    					value = 1;
    				else if (value > 99)
    					value = 99;
    				player.getSkills().set(skillId, value);
    				player.getSkills().setXp(skillId, Skills.getXPForLevel(value));
    				player.getAppearence().generateAppearanceData();
    				player.getDialogueManager().finishDialogue();
    			} else if (player.getTemporaryAttributtes().get("kilnX") != null) {
    				int index = (Integer) player.getTemporaryAttributtes().get("scIndex");
    				int componentId = (Integer) player.getTemporaryAttributtes().get("scComponentId");
    				int itemId = (Integer) player.getTemporaryAttributtes().get("scItemId");
    				player.getTemporaryAttributtes().remove("kilnX");
    				if (StealingCreation.proccessKilnItems(player, componentId, index, itemId, value))
    					return;
    			}
    		} else if (packetId == SWITCH_INTERFACE_ITEM_PACKET) {
    			stream.readShortLE128();
    			int fromInterfaceHash = stream.readIntV1();
    			int toInterfaceHash = stream.readInt();
    			int fromSlot = stream.readUnsignedShort();
    			int toSlot = stream.readUnsignedShortLE128();
    			stream.readUnsignedShortLE();
    
    
    			int toInterfaceId = toInterfaceHash >> 16;
    				int toComponentId = toInterfaceHash - (toInterfaceId << 16);
    				int fromInterfaceId = fromInterfaceHash >> 16;
    				int fromComponentId = fromInterfaceHash - (fromInterfaceId << 16);
    
    				if (Utils.getInterfaceDefinitionsSize() <= fromInterfaceId
    						|| Utils.getInterfaceDefinitionsSize() <= toInterfaceId)
    					return;
    				if (!player.getInterfaceManager()
    						.containsInterface(fromInterfaceId)
    						|| !player.getInterfaceManager().containsInterface(
    								toInterfaceId))
    					return;
    				if (fromComponentId != -1
    						&& Utils.getInterfaceDefinitionsComponentsSize(fromInterfaceId) <= fromComponentId)
    					return;
    				if (toComponentId != -1
    						&& Utils.getInterfaceDefinitionsComponentsSize(toInterfaceId) <= toComponentId)
    					return;
    				if (fromInterfaceId == Inventory.INVENTORY_INTERFACE
    						&& fromComponentId == 0
    						&& toInterfaceId == Inventory.INVENTORY_INTERFACE
    						&& toComponentId == 0) {
    					toSlot -= 28;
    					if (toSlot < 0
    							|| toSlot >= player.getInventory()
    							.getItemsContainerSize()
    							|| fromSlot >= player.getInventory()
    							.getItemsContainerSize())
    						return;
    					player.getInventory().switchItem(fromSlot, toSlot);
    				} else if (fromInterfaceId == 763 && fromComponentId == 0
    						&& toInterfaceId == 763 && toComponentId == 0) {
    					if (toSlot >= player.getInventory().getItemsContainerSize()
    							|| fromSlot >= player.getInventory()
    							.getItemsContainerSize())
    						return;
    					player.getInventory().switchItem(fromSlot, toSlot);
    				} else if (fromInterfaceId == 762 && toInterfaceId == 762) {
    					player.getBank().switchItem(fromSlot, toSlot, fromComponentId,
    							toComponentId);
    				}
    				if (Settings.DEBUG)
    					System.out.println("Switch item " + fromInterfaceId + ", "
    							+ fromSlot + ", " + toSlot);
    		} else if (packetId == DONE_LOADING_REGION_PACKET) {
    			/*
    			 * if(!player.clientHasLoadedMapRegion()) { //load objects and items
    			 * here player.setClientHasLoadedMapRegion(); }
    			 * //player.refreshSpawnedObjects(); //player.refreshSpawnedItems();
    			 */
    		} else if (packetId == WALKING_PACKET
    				|| packetId == MINI_WALKING_PACKET
    				|| packetId == ITEM_TAKE_PACKET
    				|| packetId == PLAYER_OPTION_2_PACKET
    				|| packetId == PLAYER_OPTION_4_PACKET
    				|| packetId == PLAYER_OPTION_1_PACKET || packetId == ATTACK_NPC
    				|| packetId == INTERFACE_ON_PLAYER
    				|| packetId == INTERFACE_ON_NPC
    				|| packetId == NPC_CLICK1_PACKET
    				|| packetId == NPC_CLICK2_PACKET
    				|| packetId == NPC_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK1_PACKET
    				|| packetId == SWITCH_INTERFACE_ITEM_PACKET
    				|| packetId == OBJECT_CLICK2_PACKET
    				|| packetId == OBJECT_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK4_PACKET
    				|| packetId == OBJECT_CLICK5_PACKET
    				|| packetId == INTERFACE_ON_OBJECT)
    			player.addLogicPacketToQueue(new LogicPacket(packetId, length,
    					stream));
    		else if (packetId == OBJECT_EXAMINE_PACKET) {
    			ObjectHandler.handleOption(player, stream, -1);
    		}else if (packetId == NPC_EXAMINE_PACKET) {
    			NPCHandler.handleExamine(player, stream);
    		} else if (packetId == JOIN_FRIEND_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			FriendChatsManager.joinChat(stream.readString(), player);
    		} else if (packetId == KICK_FRIEND_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.setLastPublicMessage(Utils.currentTimeMillis() + 1000); // avoids
    			// message
    			// appearing
    			player.kickPlayerFromFriendsChannel(stream.readString());
    		} else if (packetId == CHANGE_FRIEND_CHAT_PACKET) {
    			if (!player.hasStarted()
    					|| !player.getInterfaceManager().containsInterface(1108))
    				return;
    			player.getFriendsIgnores().changeRank(stream.readString(),
    					stream.readUnsignedByte128());
    		} else if (packetId == ADD_FRIEND_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().addFriend(stream.readString());
    		} else if (packetId == REMOVE_FRIEND_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().removeFriend(stream.readString());
    		} else if (packetId == ADD_IGNORE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().addIgnore(stream.readString(), stream.readUnsignedByte() == 1);
    		} else if (packetId == REMOVE_IGNORE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			player.getFriendsIgnores().removeIgnore(stream.readString());
    		} else if (packetId == SEND_FRIEND_MESSAGE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			if (player.getMuted() > Utils.currentTimeMillis()) {
    				player.getPackets().sendGameMessage(
    						"You temporary muted. Recheck in 48 hours.");
    				return;
    			}
    			String username = stream.readString();
    			Player p2 = World.getPlayerByDisplayName(username);
    			if (p2 == null)
    				return;
    
    			player.getFriendsIgnores().sendMessage(
    					p2,
    					Utils.fixChatMessage(Huffman.readEncryptedMessage(150,
    							stream)));
    		} else if (packetId == SEND_FRIEND_QUICK_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			String username = stream.readString();
    			int fileId = stream.readUnsignedShort();
    			byte[] data = null;
    			if (length > 3 + username.length()) {
    				data = new byte[length - (3 + username.length())];
    				stream.readBytes(data);
    			}
    			data = Utils.completeQuickMessage(player, fileId, data);
    			Player p2 = World.getPlayerByDisplayName(username);
    			if (p2 == null)
    				return;
    			player.getFriendsIgnores().sendQuickChatMessage(p2,
    					new QuickChatMessage(fileId, data));
    		} else if (packetId == PUBLIC_QUICK_CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			if (player.getLastPublicMessage() > Utils.currentTimeMillis())
    				return;
    			player.setLastPublicMessage(Utils.currentTimeMillis() + 300);
    			// just tells you which client script created packet
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean secondClientScript = stream.readByte() == 1;// script 5059
    			// or 5061
    			int fileId = stream.readUnsignedShort();
    			byte[] data = null;
    			if (length > 3) {
    				data = new byte[length - 3];
    				stream.readBytes(data);
    			}
    			data = Utils.completeQuickMessage(player, fileId, data);
    			if (chatType == 0)
    				player.sendPublicChatMessage(new QuickChatMessage(fileId, data));
    			else if (chatType == 1)
    				player.sendFriendsChannelQuickMessage(new QuickChatMessage(
    						fileId, data));
    			else if (Settings.DEBUG)
    				Logger.log(this, "Unknown chat type: " + chatType);
    		} else if (packetId == CHAT_TYPE_PACKET) {
    			chatType = stream.readUnsignedByte();
    		} else if (packetId == CHAT_PACKET) {
    			if (!player.hasStarted())
    				return;
    			if (player.getLastPublicMessage() > Utils.currentTimeMillis())
    				return;
    			player.setLastPublicMessage(Utils.currentTimeMillis() + 300);
    			int colorEffect = stream.readUnsignedByte();
    			int moveEffect = stream.readUnsignedByte();
    			String message = Huffman.readEncryptedMessage(200, stream);
    			if (message == null || message.replaceAll(" ", "").equals(""))
    				return;
    			if (message.startsWith("::") || message.startsWith(";;")) {
    				// if command exists and processed wont send message as public
    				// message
    				Commands.processCommand(player, message.replace("::", "")
    						.replace(";;", ""), false, false);
    				return;
    			}
    			if (player.getMuted() > Utils.currentTimeMillis()) {
    				player.getPackets().sendGameMessage(
    						"You temporary muted. Recheck in 48 hours.");
    				return;
    			}
    			int effects = (colorEffect << 8) | (moveEffect & 0xff);
    			if (chatType == 1)
    				player.sendFriendsChannelMessage(Utils.fixChatMessage(message));
    			else
    				player.sendPublicChatMessage(new PublicChatMessage(Utils
    						.fixChatMessage(message), effects));
    			player.setLastMsg(message);
    			if (Settings.DEBUG)
    				Logger.log(this, "Chat type: " + chatType);
    		} else if (packetId == COMMANDS_PACKET) {
    			if (!player.isRunning())
    				return;
    			boolean clientCommand = stream.readUnsignedByte() == 1;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean unknown = stream.readUnsignedByte() == 1;
    			String command = stream.readString();
    			if (!Commands.processCommand(player, command, true, clientCommand)
    					&& Settings.DEBUG)
    				Logger.log(this, "Command: " + command);
    		} else if (packetId == COLOR_ID_PACKET) {
    			if (!player.hasStarted())
    				return;
    			int colorId = stream.readUnsignedShort();
    			if (player.getTemporaryAttributtes().get("SkillcapeCustomize") != null)
    				SkillCapeCustomizer.handleSkillCapeCustomizerColor(player,
    						colorId);
    		}
    		else if (packetId == REPORT_ABUSE_PACKET) {
    			if (!player.hasStarted())
    				return;
    			int byte0 = stream.readUnsignedByte(); //correlating to first letter? keystroke > alphabet/numeric letter??
    			String remaining_username = stream.readString(); //username missing the first letter, i.e when reporting "jordan" this will return "ordan"
    			int byte2 = stream.readUnsignedByte(); //mute type i.e "bug abuse", "scamming"
    			int byte3 = stream.readUnsignedByte(); // this is 1 when mute and 0 when no mute
    			String string2 = stream.readString(); //doesn't return anything... empty.. ""
    			
    			String supposed_username = Utils.getCharacterFromByte(byte0) + remaining_username;
    			
    			System.out.println(String.format("b1: %s, string1: %s, b2: %s, b3: %s, string2: %s", byte0, remaining_username, byte2, byte3, string2));
    			player.getPackets().sendGameMessage(supposed_username+"  "+ String.format("b1: %s, string1: %s, b2: %s, b3: %s, string2: %s", byte0, remaining_username, byte2, byte3, string2));
    			/ @[Only registered and activated users can see links. ]ressWarnings("unused")
    			String username = stream.readString();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			int type = stream.readUnsignedByte();
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			boolean mute = stream.readUnsignedByte() == 1;
    		 @[Only registered and activated users can see links. ]ressWarnings("unused")
    			String unknown2 = stream.readString();*/
    		} 
    		
    		else if (packetId == KEY_PRESSED_PACKET){
    			int short0 = stream.readUnsignedShort();
    //		 @[Only registered and activated users can see links. ]ressWarnings("unchecked") List<Integer> list = (List<Integer>) player.getTemporaryAttributtes().get("keystroke_test");
    //			list.add(pressed);
    			player.getPackets().sendGameMessage("pressed: "+Utils.getKeyPressedFromListenerByte(short0));
    		} else {
    			if (Settings.DEBUG)
    				Logger.log(this, "Missing packet " + packetId
    						+ ", expected size: " + length + ", actual size: "
    						+ PACKET_SIZES[packetId]);
    		}
    	}
    
    }
    Code:
    		} else if (packetId == WALKING_PACKET
    				|| packetId == MINI_WALKING_PACKET
    				|| packetId == ITEM_TAKE_PACKET
    				|| packetId == PLAYER_OPTION_2_PACKET
    				|| packetId == PLAYER_OPTION_4_PACKET
    				|| packetId == PLAYER_OPTION_1_PACKET || packetId == ATTACK_NPC
    				|| packetId == INTERFACE_ON_PLAYER
    				|| packetId == INTERFACE_ON_NPC
    				|| packetId == NPC_CLICK1_PACKET
    				|| packetId == NPC_CLICK2_PACKET
    				|| packetId == NPC_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK1_PACKET
    				|| packetId == SWITCH_INTERFACE_ITEM_PACKET
    				|| packetId == OBJECT_CLICK2_PACKET
    				|| packetId == OBJECT_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK4_PACKET
    				|| packetId == OBJECT_CLICK5_PACKET
    				|| packetId == INTERFACE_ON_OBJECT)
    			player.addLogicPacketToQueue(new LogicPacket(packetId, length,
    					stream));
    Add your missing player packets in that if
    Project thread
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  7. #17  
    Registered Member
    Join Date
    Feb 2017
    Age
    26
    Posts
    53
    Thanks given
    3
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by clem585 View Post
    Code:
    		} else if (packetId == WALKING_PACKET
    				|| packetId == MINI_WALKING_PACKET
    				|| packetId == ITEM_TAKE_PACKET
    				|| packetId == PLAYER_OPTION_2_PACKET
    				|| packetId == PLAYER_OPTION_4_PACKET
    				|| packetId == PLAYER_OPTION_1_PACKET || packetId == ATTACK_NPC
    				|| packetId == INTERFACE_ON_PLAYER
    				|| packetId == INTERFACE_ON_NPC
    				|| packetId == NPC_CLICK1_PACKET
    				|| packetId == NPC_CLICK2_PACKET
    				|| packetId == NPC_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK1_PACKET
    				|| packetId == SWITCH_INTERFACE_ITEM_PACKET
    				|| packetId == OBJECT_CLICK2_PACKET
    				|| packetId == OBJECT_CLICK3_PACKET
    				|| packetId == OBJECT_CLICK4_PACKET
    				|| packetId == OBJECT_CLICK5_PACKET
    				|| packetId == INTERFACE_ON_OBJECT)
    			player.addLogicPacketToQueue(new LogicPacket(packetId, length,
    					stream));
    Add your missing player packets in that if
    so they're all do that test message.
    Reply With Quote  
     

  8. #18  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,556
    Thanks given
    654
    Thanks received
    640
    Rep Power
    358
    Quote Originally Posted by Copyright. View Post
    so they're all do that test message.
    So now you're just missing playerIndex/forceRun? You can check in the client where OutgoingPacket.PLAYER_OPTION_1_PACKET is called, you should see the stream.writeShort/writeByte just under.
    Project thread
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  9. #19  
    Registered Member
    Join Date
    Feb 2017
    Age
    26
    Posts
    53
    Thanks given
    3
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by clem585 View Post
    So now you're just missing playerIndex/forceRun? You can check in the client where OutgoingPacket.PLAYER_OPTION_1_PACKET is called, you should see the stream.writeShort/writeByte just under.


    in client.java i see
    Code:
    class282_sub23.buffer.writeShort(is[i_2239_], 1417031095);
    	 class282_sub23.buffer.write128Byte(0, -1733261447);
    Code:
    class282_sub23.buffer.writeShort(is[i_1802_], 1417031095);
    					class282_sub23.buffer.write128Byte(0, -256366293);
    for OutgoingPacket.PLAYER_OPTION_1_PACKET
    Reply With Quote  
     

  10. #20  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,556
    Thanks given
    654
    Thanks received
    640
    Rep Power
    358
    just use:

    Code:
    int playerIndex = stream.readUnsignedShort();
    boolean forceRun = stream.read128Byte() == 1;
    then
    Project thread
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

Page 2 of 3 FirstFirst 123 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. how do i change the player options
    By mrprostat in forum Help
    Replies: 7
    Last Post: 03-11-2009, 06:57 AM
  2. Player options
    By phat josh in forum Help
    Replies: 2
    Last Post: 02-04-2009, 10:22 PM
  3. player options
    By phat josh in forum Help
    Replies: 2
    Last Post: 02-04-2009, 12:09 PM
  4. player option help
    By mike623030 in forum Help
    Replies: 2
    Last Post: 01-17-2009, 03:06 PM
  5. Make new right click player option
    By w::v::d in forum Tutorials
    Replies: 2
    Last Post: 06-23-2008, 03:34 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •