0, NativeGameMode.fromBukkit(((Player) getEntity()).getGameMode()), WrappedChatComponent.fromText(DisguiseUtilities.getPlayerListName((Player) getEntity())));
private void sendPacketsSelf(WrappedGameProfile gameProfile) { PacketContainer removeInfo; PacketContainer addInfo; PacketContainer respawn; PacketContainer teleport; try { NativeGameMode gamemode = NativeGameMode.fromBukkit(receiver.getGameMode()); WrappedChatComponent displayName = WrappedChatComponent.fromText(receiver.getPlayerListName()); PlayerInfoData playerInfoData = new PlayerInfoData(gameProfile, 0, gamemode, displayName); //remove the old skin - client updates it only on a complete remove and add removeInfo = new PacketContainer(PLAYER_INFO); removeInfo.getPlayerInfoAction().write(0, PlayerInfoAction.REMOVE_PLAYER); removeInfo.getPlayerInfoDataLists().write(0, Collections.singletonList(playerInfoData)); //add info containing the skin data addInfo = removeInfo.deepClone(); addInfo.getPlayerInfoAction().write(0, PlayerInfoAction.ADD_PLAYER); // Respawn packet - notify the client that it should update the own skin respawn = createRespawnPacket(gamemode); //prevent the moved too quickly message teleport = createTeleportPacket(receiver.getLocation().clone()); } catch (ReflectiveOperationException reflectiveEx) { plugin.getLog().error("Error occured preparing packets. Cancelling self update", reflectiveEx); return; } sendPackets(removeInfo, addInfo, respawn, teleport); }