|
3 | 3 | import de.oliver.fancynpcs.FancyNpcs; |
4 | 4 | import de.oliver.fancynpcs.api.Npc; |
5 | 5 | import de.oliver.fancynpcs.api.events.NpcStopLookingEvent; |
6 | | -import org.bukkit.Bukkit; |
7 | 6 | import org.bukkit.event.EventHandler; |
8 | 7 | import org.bukkit.event.Listener; |
9 | 8 | import org.bukkit.event.player.PlayerQuitEvent; |
10 | 9 |
|
| 10 | +import java.util.UUID; |
| 11 | + |
11 | 12 | public class PlayerQuitListener implements Listener { |
12 | 13 |
|
| 14 | + /** |
| 15 | + * Removes the player UUID from the Npcs states, except last interaction. |
| 16 | + */ |
13 | 17 | @EventHandler |
14 | 18 | public void onPlayerQuit(PlayerQuitEvent event) { |
| 19 | + UUID uuid = event.getPlayer().getUniqueId(); |
15 | 20 | for (Npc npc : FancyNpcs.getInstance().getNpcManagerImpl().getAllNpcs()) { |
16 | | - // Changing isLookingAtPlayer state (of event player) to false. |
17 | | - // This allows the NpcStartLookingEvent to be called when player joins back. (Because otherwise, state would remain true and no change would be detected) |
18 | | - npc.getIsVisibleForPlayer().put(event.getPlayer().getUniqueId(), false); |
19 | | - npc.getIsForcedHidden().put(event.getPlayer().getUniqueId(), false); |
20 | | - npc.getIsLookingAtPlayer().put(event.getPlayer().getUniqueId(), false); |
21 | | - npc.getIsTeamCreated().put(event.getPlayer().getUniqueId(), false); |
22 | | - // Calling NpcStopLookingEvent. |
23 | | - Bukkit.getPluginManager().callEvent(new NpcStopLookingEvent(npc, event.getPlayer())); |
| 21 | + npc.getIsVisibleForPlayer().remove(uuid); |
| 22 | + npc.getIsForcedHidden().remove(uuid); |
| 23 | + npc.getIsLookingAtPlayer().remove(uuid); |
| 24 | + npc.getIsTeamCreated().remove(uuid); |
| 25 | + new NpcStopLookingEvent(npc, event.getPlayer()).callEvent(); |
24 | 26 | } |
25 | 27 | } |
26 | 28 | } |
0 commit comments