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()) + } }