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