@Override public void onPacketSending(final PacketEvent event) { if (event.isCancelled()) return; Player observer = event.getPlayer(); if (event.getPacket().getPlayerInfoAction().read(0) != PlayerInfoAction.ADD_PLAYER) return; List<PlayerInfoData> list = event.getPacket().getPlayerInfoDataLists().read(0); Iterator<PlayerInfoData> itel = list.iterator(); while (itel.hasNext()) { PlayerInfoData data = itel.next(); Player player = Bukkit.getPlayer(data.getProfile().getUUID()); if (player == null) continue; Disguise disguise = DisguiseAPI.getDisguise(observer, player); if (disguise == null) continue; if (!disguise.isHidePlayer()) continue; itel.remove(); } if (list.isEmpty()) { event.setCancelled(true); } else { event.getPacket().getPlayerInfoDataLists().write(0, list); } }
@Override public void onPacketSending(PacketEvent event) { if (event.getPacket().getPlayerInfoAction().read(0) != EnumWrappers.PlayerInfoAction.ADD_PLAYER) { return; } List<PlayerInfoData> newPlayerInfo = new ArrayList<>(); for (PlayerInfoData playerInfo : event.getPacket().getPlayerInfoDataLists().read(0)) { Player player; if (playerInfo == null || playerInfo.getProfile() == null || (player = Bukkit.getServer().getPlayer(playerInfo.getProfile().getUUID())) == null) { // Unknown Player newPlayerInfo.add(playerInfo); continue; } newPlayerInfo.add(new PlayerInfoData(getSentName(player.getEntityId(), playerInfo.getProfile(), event.getPlayer()), playerInfo.getPing(), playerInfo.getGameMode(), playerInfo.getDisplayName())); } event.getPacket().getPlayerInfoDataLists().write(0, newPlayerInfo); } });
spawnPlayer.getModifier().write(1, gameProfile.getUUID());