Skip to content

Instantly share code, notes, and snippets.

@Zidkon
Created September 25, 2012 01:33
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Zidkon/3779464 to your computer and use it in GitHub Desktop.
Save Zidkon/3779464 to your computer and use it in GitHub Desktop.
Quick Fix to aadnk TeleportFixTwo
package com.comphenix.example;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.plugin.Plugin;
public class TeleportFixThree implements Listener {
private Server server;
private Plugin plugin;
private final int TELEPORT_FIX_DELAY = 15; // ticks
public TeleportFixThree(Plugin plugin) {
this.plugin = plugin;
this.server = plugin.getServer();
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerTeleport(PlayerTeleportEvent event) {
final Player player = event.getPlayer();
final int visibleDistance = server.getViewDistance() * 16;
// Fix the visibility issue one tick later
server.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
// Refresh nearby clients
final List<Player> nearby = getPlayersWithin(player, visibleDistance);
System.out.println("Applying fix ... " + visibleDistance);
// Hide every player
updateEntities(player, nearby, false);
// Then show them again
server.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
updateEntities(player, nearby, true);
}
}, 1);
}
}, TELEPORT_FIX_DELAY);
}
private void updateEntities(Player tpedPlayer. List<Player> players, boolean visible) {
// Hide or show every player to tpedPlayer
// and hide or show tpedPlayer to every player.
for (Player player : players) {
if (visible)
tpedPlayer.showPlayer(player);
player.showPlayer(tpedPlayer);
else
tpedPlayer.hidePlayer(player);
player.hidePlayer(tpedPlayer);
}
}
private List<Player> getPlayersWithin(Player player, int distance) {
List<Player> res = new ArrayList<Player>();
int d2 = distance * distance;
for (Player p : server.getOnlinePlayers()) {
if (p != player && p.getWorld() == player.getWorld() && p.getLocation().distanceSquared(player.getLocation()) <= d2) {
res.add(p);
}
}
return res;
}
}
@coolkrokogamer
Copy link

Line 54:
private void updateEntities(Player tpedPlayer. List<Player> players, boolean visible) {
Has a . instead of a ,
private void updateEntities(Player tpedPlayer, List<Player> players, boolean visible) {

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment