Citizens2/src/main/java/net/citizensnpcs/npc/EntityControllers.java

97 lines
4.5 KiB
Java

package net.citizensnpcs.npc;
import java.util.Map;
import net.citizensnpcs.npc.entity.BatController;
import net.citizensnpcs.npc.entity.BlazeController;
import net.citizensnpcs.npc.entity.CaveSpiderController;
import net.citizensnpcs.npc.entity.ChickenController;
import net.citizensnpcs.npc.entity.CowController;
import net.citizensnpcs.npc.entity.CreeperController;
import net.citizensnpcs.npc.entity.EnderDragonController;
import net.citizensnpcs.npc.entity.EndermanController;
import net.citizensnpcs.npc.entity.GhastController;
import net.citizensnpcs.npc.entity.GiantController;
import net.citizensnpcs.npc.entity.HorseController;
import net.citizensnpcs.npc.entity.HumanController;
import net.citizensnpcs.npc.entity.IronGolemController;
import net.citizensnpcs.npc.entity.MagmaCubeController;
import net.citizensnpcs.npc.entity.MushroomCowController;
import net.citizensnpcs.npc.entity.OcelotController;
import net.citizensnpcs.npc.entity.PigController;
import net.citizensnpcs.npc.entity.PigZombieController;
import net.citizensnpcs.npc.entity.SheepController;
import net.citizensnpcs.npc.entity.SilverfishController;
import net.citizensnpcs.npc.entity.SkeletonController;
import net.citizensnpcs.npc.entity.SlimeController;
import net.citizensnpcs.npc.entity.SnowmanController;
import net.citizensnpcs.npc.entity.SpiderController;
import net.citizensnpcs.npc.entity.SquidController;
import net.citizensnpcs.npc.entity.VillagerController;
import net.citizensnpcs.npc.entity.WitchController;
import net.citizensnpcs.npc.entity.WitherController;
import net.citizensnpcs.npc.entity.WolfController;
import net.citizensnpcs.npc.entity.ZombieController;
import org.bukkit.entity.EntityType;
import com.google.common.base.Throwables;
import com.google.common.collect.Maps;
public class EntityControllers {
public static boolean controllerExistsForType(EntityType type) {
return TYPES.containsKey(type);
}
public static EntityController createForType(EntityType type) {
Class<? extends EntityController> controllerClass = TYPES.get(type);
if (controllerClass == null)
throw new IllegalArgumentException("Unknown EntityType: " + type);
try {
return controllerClass.newInstance();
} catch (Throwable ex) {
Throwables.getRootCause(ex).printStackTrace();
return null;
}
}
public static void setEntityControllerForType(EntityType type, Class<? extends EntityController> controller) {
TYPES.put(type, controller);
}
private static final Map<EntityType, Class<? extends EntityController>> TYPES = Maps.newEnumMap(EntityType.class);
static {
TYPES.put(EntityType.BAT, BatController.class);
TYPES.put(EntityType.BLAZE, BlazeController.class);
TYPES.put(EntityType.CAVE_SPIDER, CaveSpiderController.class);
TYPES.put(EntityType.CHICKEN, ChickenController.class);
TYPES.put(EntityType.COW, CowController.class);
TYPES.put(EntityType.CREEPER, CreeperController.class);
TYPES.put(EntityType.ENDER_DRAGON, EnderDragonController.class);
TYPES.put(EntityType.ENDERMAN, EndermanController.class);
TYPES.put(EntityType.GHAST, GhastController.class);
TYPES.put(EntityType.GIANT, GiantController.class);
TYPES.put(EntityType.HORSE, HorseController.class);
TYPES.put(EntityType.IRON_GOLEM, IronGolemController.class);
TYPES.put(EntityType.MAGMA_CUBE, MagmaCubeController.class);
TYPES.put(EntityType.MUSHROOM_COW, MushroomCowController.class);
TYPES.put(EntityType.OCELOT, OcelotController.class);
TYPES.put(EntityType.PIG, PigController.class);
TYPES.put(EntityType.PIG_ZOMBIE, PigZombieController.class);
TYPES.put(EntityType.PLAYER, HumanController.class);
TYPES.put(EntityType.SHEEP, SheepController.class);
TYPES.put(EntityType.SILVERFISH, SilverfishController.class);
TYPES.put(EntityType.SKELETON, SkeletonController.class);
TYPES.put(EntityType.SLIME, SlimeController.class);
TYPES.put(EntityType.SNOWMAN, SnowmanController.class);
TYPES.put(EntityType.SPIDER, SpiderController.class);
TYPES.put(EntityType.SQUID, SquidController.class);
TYPES.put(EntityType.VILLAGER, VillagerController.class);
TYPES.put(EntityType.WOLF, WolfController.class);
TYPES.put(EntityType.WITCH, WitchController.class);
TYPES.put(EntityType.WITHER, WitherController.class);
TYPES.put(EntityType.ZOMBIE, ZombieController.class);
}
}