Improve tablist removal and skin updating

This commit is contained in:
Morphan1 2015-03-10 03:14:43 -04:00
parent 3a6a366545
commit 5b545d96e9
2 changed files with 44 additions and 1 deletions

View File

@ -30,9 +30,13 @@ import net.citizensnpcs.trait.CurrentLocation;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.minecraft.server.v1_8_R2.EntityPlayer;
import net.minecraft.server.v1_8_R2.PacketPlayOutPlayerInfo;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -49,6 +53,7 @@ import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.vehicle.VehicleEnterEvent;
import org.bukkit.event.world.ChunkLoadEvent;
@ -60,6 +65,7 @@ import com.google.common.base.Predicates;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import org.bukkit.scheduler.BukkitRunnable;
public class EventListen implements Listener {
private final NPCRegistry npcRegistry = CitizensAPI.getNPCRegistry();
@ -272,6 +278,34 @@ public class EventListen implements Listener {
Bukkit.getPluginManager().callEvent(rightClickEvent);
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerJoin(final PlayerJoinEvent event) {
new BukkitRunnable() {
@Override
public void run() {
Messaging.send(Bukkit.getConsoleSender(), "TEST ENTITIES");
Player player = event.getPlayer();
for (Entity entity : player.getNearbyEntities(72, 72, 72)) {
Messaging.send(Bukkit.getConsoleSender(), "TEST ENTITY");
if (entity instanceof Player && npcRegistry.isNPC(entity)) {
Messaging.send(Bukkit.getConsoleSender(), "YUP");
final EntityPlayer entityplayer = ((CraftPlayer) player).getHandle();
final EntityPlayer entitynpc = ((CraftPlayer) entity).getHandle();
entityplayer.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(
PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, entitynpc));
new BukkitRunnable() {
@Override
public void run() {
entityplayer.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(
PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, entitynpc));
}
}.runTaskLater(CitizensAPI.getPlugin(), 2);
}
}
}
}.runTaskLater(CitizensAPI.getPlugin(), 30);
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerQuit(PlayerQuitEvent event) {
Editor.leave(event.getPlayer());

View File

@ -2,6 +2,7 @@ package net.citizensnpcs.util.nms;
import java.lang.reflect.Field;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.util.NMS;
import net.minecraft.server.v1_8_R2.Entity;
import net.minecraft.server.v1_8_R2.EntityPlayer;
@ -9,6 +10,7 @@ import net.minecraft.server.v1_8_R2.EntityTrackerEntry;
import net.minecraft.server.v1_8_R2.PacketPlayOutPlayerInfo;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class PlayerlistTrackerEntry extends EntityTrackerEntry {
public PlayerlistTrackerEntry(Entity entity, int i, int j, boolean flag) {
@ -20,7 +22,7 @@ public class PlayerlistTrackerEntry extends EntityTrackerEntry {
}
@Override
public void updatePlayer(EntityPlayer entityplayer) {
public void updatePlayer(final EntityPlayer entityplayer) {
if (entityplayer != this.tracker && c(entityplayer)) {
if (!this.trackedPlayers.contains(entityplayer)
&& ((entityplayer.u().getPlayerChunkMap().a(entityplayer, this.tracker.ae, this.tracker.ag)) || (this.tracker.attachedToPlayer))) {
@ -31,6 +33,13 @@ public class PlayerlistTrackerEntry extends EntityTrackerEntry {
}
entityplayer.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(
PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, (EntityPlayer) this.tracker));
new BukkitRunnable() {
@Override
public void run() {
entityplayer.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(
PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, (EntityPlayer) tracker));
}
}.runTaskLater(CitizensAPI.getPlugin(), 2);
}
}
}