diff --git a/NMS/v1_15_R1/src/main/java/com/willfp/illusioner/v1_15_R1/Illusioner.java b/NMS/v1_15_R1/src/main/java/com/willfp/illusioner/v1_15_R1/Illusioner.java index 547983f..f4bb5dd 100644 --- a/NMS/v1_15_R1/src/main/java/com/willfp/illusioner/v1_15_R1/Illusioner.java +++ b/NMS/v1_15_R1/src/main/java/com/willfp/illusioner/v1_15_R1/Illusioner.java @@ -16,9 +16,10 @@ public class Illusioner implements IllusionerWrapper { @Override public EntityIllusionerWrapper adapt(org.bukkit.entity.Illusioner illusioner, Location location, double maxHealth, double attackDamage, String name) { - EntityIllusioner internalIllusioner = new EntityIllusioner(location, maxHealth, attackDamage, name); - if(!(illusioner instanceof CraftIllusioner)) return null; - ((CraftIllusioner) illusioner).setHandle(internalIllusioner); - return internalIllusioner; + if(illusioner instanceof CraftIllusioner) { + if(((CraftIllusioner) illusioner).getHandle() instanceof EntityIllusionerWrapper) return null; + } else return null; + illusioner.remove(); + return spawn(location, maxHealth, attackDamage, name); } } diff --git a/NMS/v1_16_R1/src/main/java/com/willfp/illusioner/v1_16_R1/Illusioner.java b/NMS/v1_16_R1/src/main/java/com/willfp/illusioner/v1_16_R1/Illusioner.java index 149d543..c428f58 100644 --- a/NMS/v1_16_R1/src/main/java/com/willfp/illusioner/v1_16_R1/Illusioner.java +++ b/NMS/v1_16_R1/src/main/java/com/willfp/illusioner/v1_16_R1/Illusioner.java @@ -16,9 +16,10 @@ public class Illusioner implements IllusionerWrapper { @Override public EntityIllusionerWrapper adapt(org.bukkit.entity.Illusioner illusioner, Location location, double maxHealth, double attackDamage, String name) { - EntityIllusioner internalIllusioner = new EntityIllusioner(location, maxHealth, attackDamage, name); - if(!(illusioner instanceof CraftIllusioner)) return null; - ((CraftIllusioner) illusioner).setHandle(internalIllusioner); - return internalIllusioner; + if(illusioner instanceof CraftIllusioner) { + if(((CraftIllusioner) illusioner).getHandle() instanceof EntityIllusionerWrapper) return null; + } else return null; + illusioner.remove(); + return spawn(location, maxHealth, attackDamage, name); } } diff --git a/NMS/v1_16_R2/src/main/java/com/willfp/illusioner/v1_16_R2/Illusioner.java b/NMS/v1_16_R2/src/main/java/com/willfp/illusioner/v1_16_R2/Illusioner.java index 19c7414..3ced46a 100644 --- a/NMS/v1_16_R2/src/main/java/com/willfp/illusioner/v1_16_R2/Illusioner.java +++ b/NMS/v1_16_R2/src/main/java/com/willfp/illusioner/v1_16_R2/Illusioner.java @@ -16,9 +16,10 @@ public class Illusioner implements IllusionerWrapper { @Override public EntityIllusionerWrapper adapt(org.bukkit.entity.Illusioner illusioner, Location location, double maxHealth, double attackDamage, String name) { - EntityIllusioner internalIllusioner = new EntityIllusioner(location, maxHealth, attackDamage, name); - if(!(illusioner instanceof CraftIllusioner)) return null; - ((CraftIllusioner) illusioner).setHandle(internalIllusioner); - return internalIllusioner; + if(illusioner instanceof CraftIllusioner) { + if(((CraftIllusioner) illusioner).getHandle() instanceof EntityIllusionerWrapper) return null; + } else return null; + illusioner.remove(); + return spawn(location, maxHealth, attackDamage, name); } } diff --git a/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java b/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java index 29eb710..772e89f 100644 --- a/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java +++ b/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java @@ -6,6 +6,7 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.attribute.Attribute; import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarFlag; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; import org.bukkit.craftbukkit.v1_16_R3.CraftWorld; @@ -16,6 +17,7 @@ import org.bukkit.scheduler.BukkitRunnable; @SuppressWarnings("unchecked") public class EntityIllusioner extends EntityIllagerIllusioner implements EntityIllusionerWrapper { private final String displayName; + private BossBar bossBar = null; public EntityIllusioner(Location location, double maxHealth, double attackDamage, String name) { super(EntityTypes.ILLUSIONER, ((CraftWorld) location.getWorld()).getHandle()); @@ -46,7 +48,9 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI @Override public BossBar createBossbar(Plugin plugin, BarColor color, BarStyle style) { - BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style); + if(bossBar != null) return bossBar; + BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style, (BarFlag) null); + this.bossBar = bossBar; Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer); LivingEntity entity = (LivingEntity) this.getBukkitEntity(); diff --git a/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/Illusioner.java b/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/Illusioner.java index 6098451..8e38bf7 100644 --- a/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/Illusioner.java +++ b/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/Illusioner.java @@ -16,9 +16,10 @@ public class Illusioner implements IllusionerWrapper { @Override public EntityIllusionerWrapper adapt(org.bukkit.entity.Illusioner illusioner, Location location, double maxHealth, double attackDamage, String name) { - EntityIllusioner internalIllusioner = new EntityIllusioner(location, maxHealth, attackDamage, name); - if(!(illusioner instanceof CraftIllusioner)) return null; - ((CraftIllusioner) illusioner).setHandle(internalIllusioner); - return internalIllusioner; + if(illusioner instanceof CraftIllusioner) { + if(((CraftIllusioner) illusioner).getHandle() instanceof EntityIllusionerWrapper) return null; + } else return null; + illusioner.remove(); + return spawn(location, maxHealth, attackDamage, name); } }