From d344e02319085d463389bcee4c440fa2efcff172 Mon Sep 17 00:00:00 2001 From: Pyrbu <pyrmcserver@gmail.com> Date: Mon, 17 Jul 2023 23:38:12 +0200 Subject: [PATCH 1/2] use a concurrent set to possibly prevent a ConcurrentModificationException --- plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java b/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java index 3b62050..8bd8f56 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java @@ -3,11 +3,11 @@ package lol.pyr.znpcsplus.util; import org.bukkit.entity.Player; import java.util.Collections; -import java.util.HashSet; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; public abstract class Viewable { - private final Set<Player> viewers = new HashSet<>(); + private final Set<Player> viewers = ConcurrentHashMap.newKeySet(); public void delete() { UNSAFE_hideAll(); From 23ada2d52fd69721c7063502635064425966db13 Mon Sep 17 00:00:00 2001 From: Pyrbu <pyrmcserver@gmail.com> Date: Mon, 17 Jul 2023 23:40:17 +0200 Subject: [PATCH 2/2] add visibility methods to api --- api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java b/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java index 02dc725..49a185d 100644 --- a/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java +++ b/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java @@ -5,6 +5,7 @@ import lol.pyr.znpcsplus.api.hologram.Hologram; import lol.pyr.znpcsplus.api.interaction.InteractionAction; import lol.pyr.znpcsplus.util.NpcLocation; import org.bukkit.World; +import org.bukkit.entity.Player; import java.util.List; import java.util.UUID; @@ -20,4 +21,8 @@ public interface Npc extends PropertyHolder { UUID getUuid(); World getWorld(); List<? extends InteractionAction> getActions(); + boolean isVisibleTo(Player player); + void hide(Player player); + void show(Player player); + void respawn(Player player); }