diff --git a/pom.xml b/pom.xml
index 8865472b4..8e7a45f33 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,6 +162,10 @@
WorldEdit
https://maven.enginehub.org/repo/
+
+ everything
+ https://repo.citizensnpcs.co/
+
@@ -198,6 +202,13 @@
4.9.1
provided
+
+ net.citizensnpcs
+ citizens
+ 2.0.27-SNAPSHOT
+ jar
+ provided
+
com.github.ben-manes.caffeine
diff --git a/src/main/java/com/volmit/iris/Iris.java b/src/main/java/com/volmit/iris/Iris.java
index 3c7cfe370..652c3198e 100644
--- a/src/main/java/com/volmit/iris/Iris.java
+++ b/src/main/java/com/volmit/iris/Iris.java
@@ -6,6 +6,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
+import com.volmit.iris.link.CitizensLink;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.World.Environment;
@@ -64,6 +65,7 @@ public class Iris extends MortarPlugin
public static IrisBoardManager board;
public static MultiverseCoreLink linkMultiverseCore;
public static MythicMobsLink linkMythicMobs;
+ public static CitizensLink linkCitizens;
private static IrisLock lock = new IrisLock("Iris");
private static final Queue syncJobs = new ShurikenQueue<>();
public static boolean customModels = doesSupportCustomModels();
diff --git a/src/main/java/com/volmit/iris/link/CitizensLink.java b/src/main/java/com/volmit/iris/link/CitizensLink.java
new file mode 100644
index 000000000..7dea73570
--- /dev/null
+++ b/src/main/java/com/volmit/iris/link/CitizensLink.java
@@ -0,0 +1,46 @@
+package com.volmit.iris.link;
+
+import net.citizensnpcs.api.CitizensAPI;
+import net.citizensnpcs.api.npc.NPC;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.plugin.Plugin;
+
+public class CitizensLink
+{
+ public CitizensLink()
+ {
+
+ }
+
+ public boolean supported()
+ {
+ return getCitizens() != null;
+ }
+
+ public Entity spawn(EntityType name, Location a)
+ {
+ if(!supported())
+ {
+ return null;
+ }
+
+ NPC npc = CitizensAPI.getNPCRegistry().createNPC(name, "");
+ npc.spawn(a);
+ return npc.getEntity();
+ }
+
+ public Plugin getCitizens()
+ {
+ Plugin p = Bukkit.getPluginManager().getPlugin("Citizens");
+
+ if(p == null)
+ {
+ return null;
+ }
+
+ return p;
+ }
+}
diff --git a/src/main/java/com/volmit/iris/object/IrisEntity.java b/src/main/java/com/volmit/iris/object/IrisEntity.java
index 18baa13e1..19ac11468 100644
--- a/src/main/java/com/volmit/iris/object/IrisEntity.java
+++ b/src/main/java/com/volmit/iris/object/IrisEntity.java
@@ -293,6 +293,11 @@ public class IrisEntity extends IrisRegistrant
return Iris.linkMythicMobs.spawn(getMythicalType(), at);
}
+ if(isCitizens())
+ {
+ return Iris.linkCitizens.spawn(getType(), at);
+ }
+
return at.getWorld().spawnEntity(at, getType());
}
@@ -300,4 +305,9 @@ public class IrisEntity extends IrisRegistrant
{
return Iris.linkMythicMobs.supported() && !getMythicalType().trim().isEmpty();
}
+
+ public boolean isCitizens()
+ {
+ return Iris.linkCitizens.supported(); // TODO Need to determine how to tell if entity needs to be Citizen NPC (eg. getCitizensType())
+ }
}