public void resendPlayerPacket(Player receiver, Skin skin, boolean isReset) {
PacketContainer removeInfo;
PacketContainer addInfo;
PacketContainer respawn;
PacketContainer teleport;
try {
EntityPlayer ep = ((CraftPlayer) receiver).getHandle();
GameProfile gameProfile = ep.getProfile();
PropertyMap pm = gameProfile.getProperties();
Property property = pm.get("textures").iterator().next();
pm.remove("textures", property);
pm.put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
EnumWrappers.NativeGameMode gamemode = EnumWrappers.NativeGameMode.fromBukkit(receiver.getGameMode());
WrappedChatComponent displayName = WrappedChatComponent.fromText(receiver.getPlayerListName());
PlayerInfoData playerInfoData = new PlayerInfoData(WrappedGameProfile.fromHandle(gameProfile), 0, gamemode, displayName);
removeInfo = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
removeInfo.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
removeInfo.getPlayerInfoDataLists().write(0, Collections.singletonList(playerInfoData));
addInfo = removeInfo.deepClone();
addInfo.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.ADD_PLAYER);
respawn = createRespawnPacket(receiver, gamemode);
teleport = createTeleportPacket(receiver.getLocation().clone());
} catch (ReflectiveOperationException reflectiveEx) {
reflectiveEx.printStackTrace();
return;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter