Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Main plugin;
- public Events(Main plugin) {
- this.plugin = plugin;
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent event) {
- new BukkitRunnable() {
- public void run() {
- for (Player p : plugin.getServer().getOnlinePlayers()) {
- removePlayers(p);
- }
- }
- }.runTaskLater(plugin, 5);
- }
- @EventHandler
- public void onPlayerMove(PlayerMoveEvent event) {
- Player player = event.getPlayer();
- int distance = 10;
- List<Player> visiblePlayers = new ArrayList<>();
- visiblePlayers.add(player);
- List<Player> nonVisiblePlayers = new ArrayList<>();
- nonVisiblePlayers.add(player);
- for (Player serverPlayer : player.getWorld().getPlayers()) {
- if (player.getName().equals(serverPlayer.getName())) continue;
- if (player.getLocation().distance(serverPlayer.getLocation()) <= distance) {
- visiblePlayers.add(serverPlayer);
- } else {
- nonVisiblePlayers.add(serverPlayer);
- }
- }
- addPlayer(player, visiblePlayers);
- removePlayers(player, nonVisiblePlayers);
- }
- public void addPlayer(Player receiver, List<Player> players) {
- EntityPlayer[] playersNMS = new EntityPlayer[players.size()];
- int current = 0;
- for (Player player : players) {
- playersNMS[current] = ((CraftPlayer) player).getHandle();
- current++;
- }
- PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, playersNMS);
- ((CraftPlayer) receiver).getHandle().playerConnection.sendPacket(packet);
- }
- public void removePlayers(Player receiver) {
- Collection<? extends Player> playersBukkit = Bukkit.getOnlinePlayers();
- EntityPlayer[] playersNMS = new EntityPlayer[playersBukkit.size()];
- int current = 0;
- for (Player player : playersBukkit) {
- playersNMS[current] = ((CraftPlayer) player).getHandle();
- current++;
- }
- PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, playersNMS);
- ((CraftPlayer) receiver).getHandle().playerConnection.sendPacket(packet);
- }
- public void removePlayers(Player receiver, List<Player> players) {
- EntityPlayer[] playersNMS = new EntityPlayer[players.size()];
- int current = 0;
- for (Player player : players) {
- playersNMS[current] = ((CraftPlayer) player).getHandle();
- current++;
- }
- PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, playersNMS);
- ((CraftPlayer) receiver).getHandle().playerConnection.sendPacket(packet);
- }
Advertisement
Add Comment
Please, Sign In to add comment