public void hidePlayer(Player player) { Validate.notNull(player, "hidden player cannot be null"); if (getHandle().playerNetServerHandler == null) return; if (equals(player)) return; if (hiddenPlayers.contains(player.getUniqueId())) return; hiddenPlayers.add(player.getUniqueId()); //remove this player from the hidden player's EntityTrackerEntry net.minecraft.entity.EntityTracker tracker = ((net.minecraft.world.WorldServer) entity.worldObj).theEntityTracker; net.minecraft.entity.player.EntityPlayerMP other = ((CraftPlayer) player).getHandle(); net.minecraft.entity.EntityTrackerEntry entry = (net.minecraft.entity.EntityTrackerEntry) tracker.trackedEntityIDs.lookup(other.getEntityId()); if (entry != null) { entry.removePlayerFromTracker(getHandle()); } //remove the hidden player from this player user list getHandle().playerNetServerHandler.sendPacket(new net.minecraft.network.play.server.S38PacketPlayerListItem(player.getPlayerListName(), false, 9999)); }
public void showPlayer(Player player) { Validate.notNull(player, "shown player cannot be null"); if (getHandle().playerNetServerHandler == null) return; if (equals(player)) return; if (!hiddenPlayers.contains(player.getUniqueId())) return; hiddenPlayers.remove(player.getUniqueId()); EntityTracker tracker = ((WorldServer) entity.worldObj).theEntityTracker; EntityPlayerMP other = ((CraftPlayer) player).getHandle(); EntityTrackerEntry entry = (EntityTrackerEntry) tracker.trackedEntityIDs.lookup(other.getEntityId()); if (entry != null) { entry.removePlayerFromTracker(getHandle()); } getHandle().playerNetServerHandler.sendPacket(new S38PacketPlayerListItem(player.getPlayerListName(), false, 9999)); }
/** * Called when a player successfully logs in. Reads player data from disk and inserts the player into the world. */ public void playerLoggedIn(EntityPlayerMP playerIn) { this.playerEntityList.add(playerIn); this.uuidToPlayerMap.put(playerIn.getUniqueID(), playerIn); this.sendPacketToAllPlayers(new S38PacketPlayerListItem(S38PacketPlayerListItem.Action.ADD_PLAYER, new EntityPlayerMP[] {playerIn})); WorldServer worldserver = this.mcServer.worldServerForDimension(playerIn.dimension); worldserver.spawnEntityInWorld(playerIn); this.preparePlayer(playerIn, (WorldServer)null); for (int i = 0; i < this.playerEntityList.size(); ++i) { EntityPlayerMP entityplayermp = (EntityPlayerMP)this.playerEntityList.get(i); playerIn.playerNetServerHandler.sendPacket(new S38PacketPlayerListItem(S38PacketPlayerListItem.Action.ADD_PLAYER, new EntityPlayerMP[] {entityplayermp})); } }
/** * Called when a player disconnects from the game. Writes player data to disk and removes them from the world. */ public void playerLoggedOut(EntityPlayerMP par1EntityPlayerMP) { par1EntityPlayerMP.triggerAchievement(StatList.leaveGameStat); this.writePlayerData(par1EntityPlayerMP); WorldServer var2 = par1EntityPlayerMP.getServerForPlayer(); if (par1EntityPlayerMP.ridingEntity != null) { var2.removePlayerEntityDangerously(par1EntityPlayerMP.ridingEntity); logger.debug("removing player mount"); } var2.removeEntity(par1EntityPlayerMP); var2.getPlayerManager().removePlayer(par1EntityPlayerMP); this.playerEntityList.remove(par1EntityPlayerMP); this.field_148547_k.remove(par1EntityPlayerMP.getCommandSenderName()); this.func_148540_a(new S38PacketPlayerListItem(par1EntityPlayerMP.getCommandSenderName(), false, 9999)); }
@Redirect(method = "playerLoggedOut", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/management/ServerConfigurationManager;" + "sendPacketToAllPlayers(Lnet/minecraft/network/Packet;)V")) public void firePlayerListData(ServerConfigurationManager manager, net.minecraft.network.Packet packetIn, EntityPlayerMP playerIn) { PlayerListData playerListData = ((Player) playerIn).getPlayerListData(PlayerListAction.REMOVE_PLAYER); for (EntityPlayerMP playerMP : manager.playerEntityList) { PlayerListHook playerListHook = new PlayerListHook(playerListData.copy(), (Player) playerMP); if (!playerListHook.call().isCanceled()) { S38PacketPlayerListItem packet = new S38PacketPlayerListItem(); packet.action = S38PacketPlayerListItem.Action.valueOf(PlayerListAction.REMOVE_PLAYER.name()); WorldSettings.GameType gameType = WorldSettings.GameType.getByID(playerListHook.getData().getMode().getId()); IChatComponent iChatComponent = playerListHook.getData().displayNameSet() ? (IChatComponent) playerListHook.getData().getDisplayName() : null; packet.players.add(packet.new AddPlayerData(playerListHook.getData() .getProfile(), playerListHook.getData().getPing(), gameType, iChatComponent)); playerMP.playerNetServerHandler.sendPacket(packet); } } }
public void playerLoggedOut(EntityPlayerMP p_72367_1_) { FMLCommonHandler.instance().firePlayerLoggedOut(p_72367_1_); p_72367_1_.triggerAchievement(StatList.leaveGameStat); this.writePlayerData(p_72367_1_); WorldServer worldserver = p_72367_1_.getServerForPlayer(); if (p_72367_1_.ridingEntity != null) { worldserver.removePlayerEntityDangerously(p_72367_1_.ridingEntity); logger.debug("removing player mount"); } worldserver.removeEntity(p_72367_1_); worldserver.getPlayerManager().removePlayer(p_72367_1_); this.playerEntityList.remove(p_72367_1_); this.field_148547_k.remove(p_72367_1_.getUniqueID()); net.minecraftforge.common.chunkio.ChunkIOExecutor.adjustPoolSize(this.getCurrentPlayerCount()); this.sendPacketToAllPlayers(new S38PacketPlayerListItem(p_72367_1_.getCommandSenderName(), false, 9999)); }
@Override public void setPlayerListName(String name) { String oldName = getHandle().listName; if (name == null) { name = getName(); } if (oldName.equals(name)) { return; } if (name.length() > 16) { throw new IllegalArgumentException("Player list names can only be a maximum of 16 characters long"); } // Collisions will make for invisible people for (int i = 0; i < server.getHandle().playerEntityList.size(); ++i) { if (((net.minecraft.entity.player.EntityPlayerMP) server.getHandle().playerEntityList.get(i)).listName.equals(name)) { throw new IllegalArgumentException(name + " is already assigned as a player list name for someone"); } } getHandle().listName = name; // Change the name on the client side net.minecraft.network.play.server.S38PacketPlayerListItem oldpacket = new net.minecraft.network.play.server.S38PacketPlayerListItem(oldName, false, 9999); net.minecraft.network.play.server.S38PacketPlayerListItem packet = new net.minecraft.network.play.server.S38PacketPlayerListItem(name, true, getHandle().ping); for (int i = 0; i < server.getHandle().playerEntityList.size(); ++i) { net.minecraft.entity.player.EntityPlayerMP entityplayer = (net.minecraft.entity.player.EntityPlayerMP) server.getHandle().playerEntityList.get(i); if (entityplayer.playerNetServerHandler == null) continue; if (entityplayer.getBukkitEntity().canSee(this)) { entityplayer.playerNetServerHandler.sendPacket(oldpacket); entityplayer.playerNetServerHandler.sendPacket(packet); } } }
public void setGameType(WorldSettings.GameType type) { this.gameType = type; type.configurePlayerCapabilities(this.thisPlayerMP.capabilities); this.thisPlayerMP.sendPlayerAbilities(); this.thisPlayerMP.mcServer.getConfigurationManager().sendPacketToAllPlayers(new S38PacketPlayerListItem(S38PacketPlayerListItem.Action.UPDATE_GAME_MODE, new EntityPlayerMP[] {this.thisPlayerMP})); }
/** * Called when a player disconnects from the game. Writes player data to disk and removes them from the world. */ public void playerLoggedOut(EntityPlayerMP playerIn) { playerIn.triggerAchievement(StatList.leaveGameStat); this.writePlayerData(playerIn); WorldServer worldserver = playerIn.getServerForPlayer(); if (playerIn.ridingEntity != null) { worldserver.removePlayerEntityDangerously(playerIn.ridingEntity); logger.debug("removing player mount"); } worldserver.removeEntity(playerIn); worldserver.getPlayerManager().removePlayer(playerIn); this.playerEntityList.remove(playerIn); UUID uuid = playerIn.getUniqueID(); EntityPlayerMP entityplayermp = (EntityPlayerMP)this.uuidToPlayerMap.get(uuid); if (entityplayermp == playerIn) { this.uuidToPlayerMap.remove(uuid); this.playerStatFiles.remove(uuid); } this.sendPacketToAllPlayers(new S38PacketPlayerListItem(S38PacketPlayerListItem.Action.REMOVE_PLAYER, new EntityPlayerMP[] {playerIn})); }
/** * self explanitory */ public void onTick() { if (++this.playerPingIndex > 600) { this.sendPacketToAllPlayers(new S38PacketPlayerListItem(S38PacketPlayerListItem.Action.UPDATE_LATENCY, this.playerEntityList)); this.playerPingIndex = 0; } }
public NetworkPlayerInfo(S38PacketPlayerListItem.AddPlayerData p_i46295_1_) { this.gameProfile = p_i46295_1_.getProfile(); this.gameType = p_i46295_1_.getGameMode(); this.responseTime = p_i46295_1_.getPing(); this.displayName = p_i46295_1_.getDisplayName(); }
@SuppressWarnings("incomplete-switch") public void handlePlayerListItem(S38PacketPlayerListItem packetIn) { PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.gameController); for (S38PacketPlayerListItem.AddPlayerData s38packetplayerlistitem$addplayerdata : packetIn.func_179767_a()) { if (packetIn.func_179768_b() == S38PacketPlayerListItem.Action.REMOVE_PLAYER) { this.playerInfoMap.remove(s38packetplayerlistitem$addplayerdata.getProfile().getId()); } else { NetworkPlayerInfo networkplayerinfo = (NetworkPlayerInfo) this.playerInfoMap .get(s38packetplayerlistitem$addplayerdata.getProfile().getId()); if (packetIn.func_179768_b() == S38PacketPlayerListItem.Action.ADD_PLAYER) { networkplayerinfo = new NetworkPlayerInfo(s38packetplayerlistitem$addplayerdata); this.playerInfoMap.put(networkplayerinfo.getGameProfile().getId(), networkplayerinfo); } if (networkplayerinfo != null) { switch (packetIn.func_179768_b()) { case ADD_PLAYER: networkplayerinfo.setGameType(s38packetplayerlistitem$addplayerdata.getGameMode()); networkplayerinfo.setResponseTime(s38packetplayerlistitem$addplayerdata.getPing()); break; case UPDATE_GAME_MODE: networkplayerinfo.setGameType(s38packetplayerlistitem$addplayerdata.getGameMode()); break; case UPDATE_LATENCY: networkplayerinfo.setResponseTime(s38packetplayerlistitem$addplayerdata.getPing()); break; case UPDATE_DISPLAY_NAME: networkplayerinfo.setDisplayName(s38packetplayerlistitem$addplayerdata.getDisplayName()); } } } } }