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);
 }