9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-21 16:09:24 +00:00

Added illusioner adapting

This commit is contained in:
Auxilor
2020-12-21 12:23:05 +00:00
parent 13b4689619
commit dddb510a2f
7 changed files with 65 additions and 0 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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