EpicBosses/plugin-modules/Core/src/com/songoda/epicbosses/utils/EntityFinder.java

168 lines
7.3 KiB
Java

package com.songoda.epicbosses.utils;
import com.songoda.epicbosses.utils.entity.ICustomEntityHandler;
import com.songoda.epicbosses.utils.entity.handlers.*;
import org.bukkit.Location;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Tameable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author Charles Cullen
* @version 1.0.0
* @since 28-Jun-18
*/
public enum EntityFinder {
ELDER_GUARDIAN("ElderGuardian", new ElderGuardianHandler(), "elderguardian", "elder_guardian", "elder guardian"),
WITHER_SKELETON("WitherSkeleton", new WitherSkeletonHandler(), "witherskeleton", "wither_skeleton", "wither skeleton"),
STRAY("Stray", new StraySkeletonHandler(), "stray"),
HUSK("Husk", new HuskZombieHandler(), "husk"),
ZOMBIE_VILLAGER("ZombieVillager", new ZombieVillagerHandler(), "zombievillager", "zombie_villager", "zombie villager", "villagerzombie", "villager_zombie", "villager zombie"),
SKELETON_HORSE("SkeletonHorse", new SkeletonHorseHandler(), "skeletonhorse", "skeleton_horse", "skeleton horse"),
ZOMBIE_HORSE("ZombieHorse", new ZombieHorseHandler(), "zombiehorse", "zombie_horse", "zombie horse"),
DONKEY("Donkey", new DonkeyHorseHandler(), "donkey"),
MULE("Mule", new MuleHorseHandler(), "mule"),
EVOKER("Evoker", new EvokerHandler(), "evoker"),
VEX("Vex", new VexHandler(), "vex"),
VINDICATOR("Vindicator", new VindicatorHandler(), "vindicator"),
ILLUSIONER("Illusioner", new IllusionerHandler(), "illusioner"),
CREEPER("Creeper", EntityType.CREEPER, "creeper"),
SKELETON("Skeleton", EntityType.SKELETON, "skeleton"),
SPIDER("Spider", EntityType.SPIDER, "spider"),
GIANT("Giant", EntityType.GIANT, "giant", "giant_zombie", "giant zombie", "giantzombie"),
ZOMBIE("Zombie", new ZombieHandler(), "zombie"),
BABY_ZOMBIE("BabyZombie", new ZombieBabyHandler(), "babyzombie", "baby_zombie", "baby zombie"),
SLIME("Slime", new SlimeHandler(), "slime"),
GHAST("Ghast", EntityType.GHAST, "ghast"),
PIG_ZOMBIE("PigZombie", new PigZombieHandler(), "pigzombie", "pig zombie", "pig_zombie", "zombiepigman", "zombie_pigman", "zombie pigman"),
BABY_PIG_ZOMBIE("BabyPigZombie", new PigZombieBabyHandler(), "babypigzombie", "baby pig zombie", "baby_pig_zombie", "babyzombiepigman", "baby_zombie_pigman", "baby zombie pigman"),
ENDERMAN("Enderman", EntityType.ENDERMAN, "enderman"),
CAVE_SPIDER("CaveSpider", EntityType.CAVE_SPIDER, "cavespider", "cave_spider", "cave spider"),
SILVERFISH("Silverfish", EntityType.SILVERFISH, "silverfish"),
BLAZE("Blaze", EntityType.BLAZE, "blaze"),
MAGMA_CUBE("MagmaCube", new MagmaCubeHandler(), "magmacube", "magma_cube", "magma cube"),
ENDER_DRAGON("EnderDragon", EntityType.ENDER_DRAGON, "enderdragon", "ender_dragon", "ender dragon"),
WITHER("Wither", EntityType.WITHER, "wither"),
BAT("Bat", EntityType.BAT, "bat"),
WITCH("Witch", EntityType.WITCH, "witch"),
ENDERMITE("Endermite", new EndermiteHandler(), "endermite"),
GUARDIAN("Guardian", new GuardianHandler(), "guardian"),
SHULKER("Shulker", new ShulkerHandler(), "shulker"),
PIG("Pig", EntityType.PIG, "pig"),
SHEEP("Sheep", EntityType.SHEEP, "sheep"),
COW("Cow", EntityType.COW, "cow"),
CHICKEN("Chicken", EntityType.CHICKEN, "chicken"),
SQUID("Squid", EntityType.SQUID, "squid"),
WOLF("Wolf", EntityType.WOLF, "wolf"),
MUSHROOM_COW("MushroomCow", EntityType.MUSHROOM_COW, "mushroomcow", "mushroom_cow", "mushroom cow", "mooshroom"),
SNOWMAN("Snowman", EntityType.SNOWMAN, "snowman"),
OCELOT("Ocelot", EntityType.OCELOT, "ocelot"),
IRON_GOLEM("IronGolem", EntityType.IRON_GOLEM, "irongolem", "iron_golem", "iron golem", "ig"),
HORSE("Horse", EntityType.HORSE, "horse"),
RABBIT("Rabbit", new RabbitHandler(), "rabbit"),
POLAR_BEAR("PolarBear", new PolarBearHandler(), "polarbear", "polar_bear", "polar bear", "snowbear", "snow_bear", "snow bear"),
LLAMA("Llama", new LlamaHandler(), "llama"),
PARROT("Parrot", new ParrotHandler(), "parrot"),
VILLAGER("Villager", new VillagerHandler(), "villager"),
DOLPHIN("Dolphin", new DolphinHandler(), "dolphin"),
DROWNED("Drowned", new DrownedHandler(), "drowned"),
FISH("Fish", new FishHandler(), "fish", "tropicalfish", "tropical fish", "tropical_fish", "clownfish", "cod", "salmon", "pufferfish"),
TURTLE("Turtle", new TurtleHandler(), "turtle"),
PHANTOM("Phantom", new PhantomHandler(), "phantom"),
CAT("Cat", new CatHandler(), "cat"),
BEE("Bee", new BeeHandler(), "bee"),
FOX("Fox", new FoxHandler(), "fox"),
PANDA("Panda", new PandaHandler(), "panda"),
PILLAGER("Pillager", new PillagerHandler(), "pillager"),
RAVAGER("Ravager", new RavagerHandler(), "ravager"),
TRADER_LLAMA("TraderLlama", new TraderLlamaHandler(), "traderllama", "trader_llama", "trader llama", "llamatrader", "llama_trader", "llama trader"),
WANDERING_TRADER("WanderingTrader", new WanderingTraderHandler(), "wanderingtrader", "wandering_trader", "wandering trader", "tradervillager", "trader_villager", "trader villager");
private ICustomEntityHandler customEntityHandler;
private List<String> names = new ArrayList<>();
private EntityType entityType;
private String fancyName;
EntityFinder(String fancyName, ICustomEntityHandler customEntityHandler, String... names) {
this.fancyName = fancyName;
this.customEntityHandler = customEntityHandler;
this.names.addAll(Arrays.asList(names));
this.names.add(fancyName);
this.entityType = null;
}
EntityFinder(String fancyName, EntityType entityType, String... names) {
this.fancyName = fancyName;
this.entityType = entityType;
this.names.addAll(Arrays.asList(names));
this.names.add(fancyName);
this.customEntityHandler = null;
}
public static EntityFinder get(String name) {
for (EntityFinder entityFinder : values()) {
for (String s : entityFinder.getNames()) {
if (name.equalsIgnoreCase(s)) return entityFinder;
}
}
return null;
}
@Override
public String toString() {
return this.fancyName;
}
public LivingEntity spawnNewLivingEntity(String input, Location location) {
if (this.customEntityHandler != null) {
LivingEntity livingEntity;
try {
livingEntity = this.customEntityHandler.getBaseEntity(input, location);
} catch (NullPointerException ex) {
Debug.FAILED_ATTEMPT_TO_SPAWN_BOSS.debug(ex.getMessage());
return null;
}
if (livingEntity instanceof Tameable) {
((Tameable) livingEntity).setTamed(true);
}
if (livingEntity instanceof Ageable) {
((Ageable) livingEntity).setAdult();
}
return livingEntity;
} else {
return (LivingEntity) location.getWorld().spawnEntity(location, getEntityType());
}
}
public ICustomEntityHandler getCustomEntityHandler() {
return this.customEntityHandler;
}
public List<String> getNames() {
return this.names;
}
public EntityType getEntityType() {
return this.entityType;
}
public String getFancyName() {
return this.fancyName;
}
}