Moved more event listeners.

This commit is contained in:
JitseB 2018-04-25 16:02:02 +02:00
parent d84a7dfc11
commit 1a99cfd2e6
3 changed files with 50 additions and 28 deletions

View File

@ -9,7 +9,8 @@ import net.jitse.npclib.listeners.packet.PacketListener;
import net.jitse.npclib.listeners.player.PlayerChangedWorldListener;
import net.jitse.npclib.listeners.player.PlayerMoveOrTeleportListener;
import net.jitse.npclib.listeners.player.PlayerQuitListener;
import net.jitse.npclib.listeners.world.ChunkListener;
import net.jitse.npclib.listeners.world.ChunkLoadListener;
import net.jitse.npclib.listeners.world.ChunkUnloadListener;
import net.jitse.npclib.skin.Skin;
import net.jitse.npclib.version.Version;
import org.bukkit.ChatColor;
@ -52,7 +53,8 @@ public class NPCLib {
pluginManager.registerEvents(new PlayerChangedWorldListener(), plugin);
pluginManager.registerEvents(new PlayerQuitListener(), plugin);
pluginManager.registerEvents(new PlayerMoveOrTeleportListener(), plugin);
pluginManager.registerEvents(new ChunkListener(), plugin);
pluginManager.registerEvents(new ChunkLoadListener(), plugin);
pluginManager.registerEvents(new ChunkUnloadListener(), plugin);
new PacketListener().start(plugin);
}

View File

@ -12,37 +12,13 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.ChunkLoadEvent;
import org.bukkit.event.world.ChunkUnloadEvent;
import java.util.UUID;
/**
* @author Jitse Boonstras
* @author Jitse Boonstra
*/
public class ChunkListener implements Listener {
@EventHandler
public void onChunkUnload(ChunkUnloadEvent event) {
Chunk chunk = event.getChunk();
for (NPC npc : NPCManager.getAllNPCs()) {
Chunk npcChunk = npc.getLocation().getChunk();
if (chunk.equals(npcChunk)) {
// Unloaded chunk with NPC in it. Hiding it from all players currently shown to.
for (UUID uuid : npc.getShown()) {
// Safety check so it doesn't send packets if the NPC has already
// been automatically despawned by the system.
if (npc.getAutoHidden().contains(uuid)) {
continue;
}
npc.hide(Bukkit.getPlayer(uuid), true);
}
}
}
}
public class ChunkLoadListener implements Listener {
@EventHandler
public void onChunkLoad(ChunkLoadEvent event) {

View File

@ -0,0 +1,44 @@
/*
* Copyright (c) 2018 Jitse Boonstra
*/
package net.jitse.npclib.listeners.world;
import net.jitse.npclib.NPCManager;
import net.jitse.npclib.api.NPC;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.ChunkUnloadEvent;
import java.util.UUID;
/**
* @author Jitse Boonstra
*/
public class ChunkUnloadListener implements Listener {
@EventHandler
public void onChunkUnload(ChunkUnloadEvent event) {
Chunk chunk = event.getChunk();
for (NPC npc : NPCManager.getAllNPCs()) {
Chunk npcChunk = npc.getLocation().getChunk();
if (chunk.equals(npcChunk)) {
// Unloaded chunk with NPC in it. Hiding it from all players currently shown to.
for (UUID uuid : npc.getShown()) {
// Safety check so it doesn't send packets if the NPC has already
// been automatically despawned by the system.
if (npc.getAutoHidden().contains(uuid)) {
continue;
}
npc.hide(Bukkit.getPlayer(uuid), true);
}
}
}
}
}