mirror of
https://github.com/Auxilor/EcoMobs.git
synced 2025-12-21 07:59:28 +00:00
Added illusioner adapting
This commit is contained in:
@@ -7,4 +7,5 @@ import org.bukkit.Location;
|
|||||||
*/
|
*/
|
||||||
public interface IllusionerWrapper {
|
public interface IllusionerWrapper {
|
||||||
EntityIllusionerWrapper spawn(Location location, double maxHealth, double attackDamage, String name);
|
EntityIllusionerWrapper spawn(Location location, double maxHealth, double attackDamage, String name);
|
||||||
|
EntityIllusionerWrapper adapt(org.bukkit.entity.Illusioner illusioner, Location location, double maxHealth, double attackDamage, String name);
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
|||||||
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
|
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftIllusioner;
|
||||||
|
|
||||||
public class Illusioner implements IllusionerWrapper {
|
public class Illusioner implements IllusionerWrapper {
|
||||||
@Override
|
@Override
|
||||||
@@ -12,4 +13,12 @@ public class Illusioner implements IllusionerWrapper {
|
|||||||
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
||||||
return illusioner;
|
return illusioner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
|||||||
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.craftbukkit.v1_16_R1.CraftWorld;
|
import org.bukkit.craftbukkit.v1_16_R1.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.v1_16_R1.entity.CraftIllusioner;
|
||||||
|
|
||||||
public class Illusioner implements IllusionerWrapper {
|
public class Illusioner implements IllusionerWrapper {
|
||||||
@Override
|
@Override
|
||||||
@@ -12,4 +13,12 @@ public class Illusioner implements IllusionerWrapper {
|
|||||||
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
||||||
return illusioner;
|
return illusioner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
|||||||
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.craftbukkit.v1_16_R2.CraftWorld;
|
import org.bukkit.craftbukkit.v1_16_R2.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.v1_16_R2.entity.CraftIllusioner;
|
||||||
|
|
||||||
public class Illusioner implements IllusionerWrapper {
|
public class Illusioner implements IllusionerWrapper {
|
||||||
@Override
|
@Override
|
||||||
@@ -12,4 +13,12 @@ public class Illusioner implements IllusionerWrapper {
|
|||||||
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
||||||
return illusioner;
|
return illusioner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
|||||||
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
|
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftIllusioner;
|
||||||
|
|
||||||
public class Illusioner implements IllusionerWrapper {
|
public class Illusioner implements IllusionerWrapper {
|
||||||
@Override
|
@Override
|
||||||
@@ -12,4 +13,12 @@ public class Illusioner implements IllusionerWrapper {
|
|||||||
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
((CraftWorld) location.getWorld()).getHandle().addEntity(illusioner);
|
||||||
return illusioner;
|
return illusioner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,11 @@ import com.willfp.illusioner.nms.NMSIllusioner;
|
|||||||
import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Illusioner;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -62,4 +64,15 @@ public class SpawnListeners implements Listener {
|
|||||||
EntityIllusionerWrapper illusioner = NMSIllusioner.spawn(event.getBlock().getLocation(), IllusionerManager.OPTIONS.getMaxHealth(), IllusionerManager.OPTIONS.getAttackDamage(), IllusionerManager.OPTIONS.getName());
|
EntityIllusionerWrapper illusioner = NMSIllusioner.spawn(event.getBlock().getLocation(), IllusionerManager.OPTIONS.getMaxHealth(), IllusionerManager.OPTIONS.getAttackDamage(), IllusionerManager.OPTIONS.getName());
|
||||||
illusioner.createBossbar(IllusionerPlugin.getInstance(), IllusionerManager.OPTIONS.getColor(), IllusionerManager.OPTIONS.getStyle());
|
illusioner.createBossbar(IllusionerPlugin.getInstance(), IllusionerManager.OPTIONS.getColor(), IllusionerManager.OPTIONS.getStyle());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onExternalSpawn(EntitySpawnEvent event) {
|
||||||
|
if(!(event.getEntity() instanceof Illusioner))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Illusioner illusioner = (Illusioner) event.getEntity();
|
||||||
|
EntityIllusionerWrapper internalIllusioner = NMSIllusioner.convertIllusioner(illusioner, IllusionerManager.OPTIONS.getMaxHealth(), IllusionerManager.OPTIONS.getAttackDamage(), IllusionerManager.OPTIONS.getName());
|
||||||
|
if(internalIllusioner == null) return;
|
||||||
|
internalIllusioner.createBossbar(IllusionerPlugin.getInstance(), IllusionerManager.OPTIONS.getColor(), IllusionerManager.OPTIONS.getStyle());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.willfp.illusioner.IllusionerPlugin;
|
|||||||
import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
import com.willfp.illusioner.nms.api.EntityIllusionerWrapper;
|
||||||
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
import com.willfp.illusioner.nms.api.IllusionerWrapper;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Illusioner;
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,4 +40,18 @@ public class NMSIllusioner {
|
|||||||
assert illusionerWrapper != null;
|
assert illusionerWrapper != null;
|
||||||
return illusionerWrapper.spawn(location, maxHealth, attackDamage, name);
|
return illusionerWrapper.spawn(location, maxHealth, attackDamage, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adapt an existing Illusioner into an Illusioner boss
|
||||||
|
*
|
||||||
|
* @param illusioner The Illusioner to adapt
|
||||||
|
* @param maxHealth The max health for the illusioner to have
|
||||||
|
* @param attackDamage The attack damage for the illusioner
|
||||||
|
* @param name The name of the Illusioner
|
||||||
|
* @return The illusioner
|
||||||
|
*/
|
||||||
|
public static EntityIllusionerWrapper convertIllusioner(Illusioner illusioner, double maxHealth, double attackDamage, String name) {
|
||||||
|
assert illusionerWrapper != null;
|
||||||
|
return illusionerWrapper.adapt(illusioner, illusioner.getLocation(), maxHealth, attackDamage, name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user