public PlayerDescriptor(Player player, int[] tickets, boolean force) { if (player.isActive()) { /* * This active check is required for the RemovePlayerDescriptor. The player id would be * -1 in this case, which causes the following code to crash. Skipping this code doesn't * matter as no update blocks can be sent when removing a player. */ int id = player.getId() - 1; int ticket = player.getAppearanceTicket(); if (tickets[id] != ticket || force) { tickets[id] = ticket; addBlock(new AppearancePlayerBlock(player)); } } if (player.isChatUpdated()) addBlock(new ChatPlayerBlock(player)); if (player.isHitOneUpdated()) addBlock(new HitOnePlayerBlock(player)); if (player.isHitTwoUpdated()) addBlock(new HitTwoPlayerBlock(player)); if (player.isChatForced()) addBlock(new ForceChatPlayerBlock(player)); if (player.isAnimationUpdated()) addBlock(new AnimationPlayerBlock(player)); if (player.isSpotAnimationUpdated()) addBlock(new SpotAnimationPlayerBlock(player)); if (player.isTurnToPositionUpdated()) addBlock(new TurnToPositionPlayerBlock(player)); if (player.isTurnToTargetUpdated()) addBlock(new TurnToMobPlayerBlock(player)); // addBlock(new ForceMovementPlayerBlock(player)); }