Convert MACreature to class.
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
package com.garbagemule.MobArena.waves;
|
package com.garbagemule.MobArena.waves;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@@ -14,185 +16,200 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import com.garbagemule.MobArena.MobArena;
|
import com.garbagemule.MobArena.MobArena;
|
||||||
import com.garbagemule.MobArena.framework.Arena;
|
import com.garbagemule.MobArena.framework.Arena;
|
||||||
|
|
||||||
public enum MACreature
|
public class MACreature
|
||||||
{
|
{
|
||||||
// Default creatures
|
// Default creatures
|
||||||
ZOMBIE(EntityType.ZOMBIE), ZOMBIES(EntityType.ZOMBIE),
|
public static final MACreature ZOMBIE = new MACreature("zombie", EntityType.ZOMBIE);
|
||||||
SKELETON(EntityType.SKELETON), SKELETONS(EntityType.SKELETON),
|
public static final MACreature SKELETON = new MACreature("skeleton", EntityType.SKELETON);
|
||||||
SPIDER(EntityType.SPIDER), SPIDERS(EntityType.SPIDER),
|
public static final MACreature SPIDER = new MACreature("spider", EntityType.SPIDER);
|
||||||
CREEPER(EntityType.CREEPER), CREEPERS(EntityType.CREEPER),
|
public static final MACreature CREEPER = new MACreature("creeper", EntityType.CREEPER);
|
||||||
WOLF(EntityType.WOLF), WOLVES(EntityType.WOLF),
|
public static final MACreature WOLF = new MACreature("wolf", "wolves", EntityType.WOLF);
|
||||||
|
|
||||||
// Special creatures
|
// Special creatures
|
||||||
ZOMBIEPIGMAN(EntityType.PIG_ZOMBIE), ZOMBIEPIGMEN(EntityType.PIG_ZOMBIE),
|
public static final MACreature ZOMBIEPIGMAN = new MACreature("zombiepigman", "zombiepigmen", EntityType.PIG_ZOMBIE);
|
||||||
POWEREDCREEPER(EntityType.CREEPER), POWEREDCREEPERS(EntityType.CREEPER),
|
public static final MACreature POWEREDCREEPER = new MACreature("poweredcreeper", EntityType.CREEPER);
|
||||||
ANGRYWOLF(EntityType.WOLF), ANGRYWOLVES(EntityType.WOLF),
|
public static final MACreature ANGRYWOLF = new MACreature("angrywolf", "angrywolves", EntityType.WOLF);
|
||||||
GIANT(EntityType.GIANT), GIANTS(EntityType.GIANT),
|
public static final MACreature GIANT = new MACreature("giant", EntityType.GIANT);
|
||||||
GHAST(EntityType.GHAST), GHASTS(EntityType.GHAST),
|
public static final MACreature GHAST = new MACreature("ghast", EntityType.GHAST);
|
||||||
ENDERMAN(EntityType.ENDERMAN), ENDERMEN(EntityType.ENDERMAN),
|
public static final MACreature ENDERMAN = new MACreature("enderman", "endermen", EntityType.ENDERMAN);
|
||||||
CAVESPIDER(EntityType.CAVE_SPIDER), CAVESPIDERS(EntityType.CAVE_SPIDER),
|
public static final MACreature CAVESPIDER = new MACreature("cavespider", EntityType.CAVE_SPIDER);
|
||||||
SILVERFISH(EntityType.SILVERFISH),
|
public static final MACreature SILVERFISH = new MACreature("silverfish", null, EntityType.SILVERFISH);
|
||||||
|
|
||||||
// 1.0 creatures
|
// 1.0 creatures
|
||||||
BLAZE(EntityType.BLAZE), BLAZES(EntityType.BLAZE),
|
public static final MACreature BLAZE = new MACreature("blaze", EntityType.BLAZE);
|
||||||
ENDERDRAGON(EntityType.ENDER_DRAGON), ENDERDRAGONS(EntityType.ENDER_DRAGON),
|
public static final MACreature ENDERDRAGON = new MACreature("enderdragon", EntityType.ENDER_DRAGON);
|
||||||
SNOWMAN(EntityType.SNOWMAN), SNOWMEN(EntityType.SNOWMAN),
|
public static final MACreature SNOWMAN = new MACreature("snowman", "snowmen", EntityType.SNOWMAN);
|
||||||
SNOWGOLEM(EntityType.SNOWMAN), SNOWGOLEMS(EntityType.SNOWMAN),
|
public static final MACreature SNOWGOLEM = new MACreature("snowgolem", EntityType.SNOWMAN);
|
||||||
MUSHROOMCOW(EntityType.MUSHROOM_COW), MUSHROOMCOWS(EntityType.MUSHROOM_COW),
|
public static final MACreature MUSHROOMCOW = new MACreature("mushroomcow", EntityType.MUSHROOM_COW);
|
||||||
VILLAGER(EntityType.VILLAGER), VILLAGERS(EntityType.VILLAGER),
|
public static final MACreature MOOSHROOM = new MACreature("mooshroom", EntityType.MUSHROOM_COW);
|
||||||
|
public static final MACreature VILLAGER = new MACreature("villager", EntityType.VILLAGER);
|
||||||
|
|
||||||
// 1.2 creatures
|
// 1.2 creatures
|
||||||
OCELOT(EntityType.OCELOT), OCELOTS(EntityType.OCELOT),
|
public static final MACreature OCELOT = new MACreature("ocelot", EntityType.OCELOT);
|
||||||
IRONGOLEM(EntityType.IRON_GOLEM), IRONGOLEMS(EntityType.IRON_GOLEM),
|
public static final MACreature IRONGOLEM = new MACreature("irongolem", EntityType.IRON_GOLEM);
|
||||||
|
|
||||||
// Passive creatures
|
// Passive creatures
|
||||||
CHICKEN(EntityType.CHICKEN), CHICKENS(EntityType.CHICKEN),
|
public static final MACreature CHICKEN = new MACreature("chicken", EntityType.CHICKEN);
|
||||||
COW(EntityType.COW), COWS(EntityType.COW),
|
public static final MACreature COW = new MACreature("cow", EntityType.COW);
|
||||||
PIG(EntityType.PIG), PIGS(EntityType.PIG),
|
public static final MACreature PIG = new MACreature("pig", EntityType.PIG);
|
||||||
SHEEP(EntityType.SHEEP),
|
public static final MACreature SHEEP = new MACreature("sheep", null, EntityType.SHEEP);
|
||||||
SQUID(EntityType.SQUID), SQUIDS(EntityType.SQUID),
|
public static final MACreature SQUID = new MACreature("squid", EntityType.SQUID);
|
||||||
|
|
||||||
// Extended creatures
|
// Extended creatures
|
||||||
EXPLODINGSHEEP(EntityType.SHEEP),
|
public static final MACreature EXPLODINGSHEEP = new MACreature("explodingsheep", null, EntityType.SHEEP);
|
||||||
|
|
||||||
// Slimes
|
// Slimes
|
||||||
SLIME(EntityType.SLIME), SLIMES(EntityType.SLIME),
|
public static final MACreature SLIME = new MACreature("slime", EntityType.SLIME);
|
||||||
SLIMETINY(EntityType.SLIME), SLIMESTINY(EntityType.SLIME),
|
public static final MACreature SLIMETINY = new MACreature("slimetiny", "slimestiny", EntityType.SLIME);
|
||||||
SLIMESMALL(EntityType.SLIME), SLIMESSMALL(EntityType.SLIME),
|
public static final MACreature SLIMESMALL = new MACreature("slimesmall", "slimessmall", EntityType.SLIME);
|
||||||
SLIMEBIG(EntityType.SLIME), SLIMESBIG(EntityType.SLIME),
|
public static final MACreature SLIMEBIG = new MACreature("slimebig", "slimesbig", EntityType.SLIME);
|
||||||
SLIMEHUGE(EntityType.SLIME), SLIMESHUGE(EntityType.SLIME),
|
public static final MACreature SLIMEHUGE = new MACreature("slimehuge", "slimeshuge", EntityType.SLIME);
|
||||||
|
|
||||||
// Magma cubes
|
// Magma cubes
|
||||||
MAGMACUBE(EntityType.MAGMA_CUBE), MAGMACUBES(EntityType.MAGMA_CUBE),
|
public static final MACreature MAGMACUBE = new MACreature("magmacube", EntityType.MAGMA_CUBE);
|
||||||
MAGMACUBETINY(EntityType.MAGMA_CUBE), MAGMACUBESTINY(EntityType.MAGMA_CUBE),
|
public static final MACreature MAGMACUBETINY = new MACreature("magmacubetiny", "magmacubestiny", EntityType.MAGMA_CUBE);
|
||||||
MAGMACUBESMALL(EntityType.MAGMA_CUBE),MAGMACUBESSMALL(EntityType.MAGMA_CUBE),
|
public static final MACreature MAGMACUBESMALL = new MACreature("magmacubesmall", "magmacubessmall", EntityType.MAGMA_CUBE);
|
||||||
MAGMACUBEBIG(EntityType.MAGMA_CUBE), MAGMACUBESBIG(EntityType.MAGMA_CUBE),
|
public static final MACreature MAGMACUBEBIG = new MACreature("magmacubebig", "magmacubesbig", EntityType.MAGMA_CUBE);
|
||||||
MAGMACUBEHUGE(EntityType.MAGMA_CUBE), MAGMACUBESHUGE(EntityType.MAGMA_CUBE),
|
public static final MACreature MAGMACUBEHUGE = new MACreature("magmacubehuge", "magmacubeshuge", EntityType.MAGMA_CUBE);
|
||||||
|
|
||||||
// 1.4 creatures
|
// 1.4 creatures
|
||||||
BAT(EntityType.BAT), BATS(EntityType.BAT),
|
public static final MACreature BAT = new MACreature("bat", EntityType.BAT);
|
||||||
WITCH(EntityType.WITCH), WITCHES(EntityType.WITCH),
|
public static final MACreature WITCH = new MACreature("witch", "witches", EntityType.WITCH);
|
||||||
WITHER(EntityType.WITHER), WITHERS(EntityType.WITHER),
|
public static final MACreature WITHER = new MACreature("wither", EntityType.WITHER);
|
||||||
WITHERSKELETON(EntityType.SKELETON), WITHERSKELETONS(EntityType.SKELETON),
|
public static final MACreature WITHERSKELETON = new MACreature("witherskeleton", EntityType.SKELETON);
|
||||||
BABYZOMBIE(EntityType.ZOMBIE), BABYZOMBIES(EntityType.ZOMBIE),
|
public static final MACreature BABYZOMBIE = new MACreature("babyzombie", EntityType.ZOMBIE);
|
||||||
BABYPIGMAN(EntityType.PIG_ZOMBIE), BABYPIGMEN(EntityType.PIG_ZOMBIE),
|
public static final MACreature BABYPIGMAN = new MACreature("babypigman", "babypigmen", EntityType.PIG_ZOMBIE);
|
||||||
ZOMBIEVILLAGER(EntityType.ZOMBIE), ZOMBIEVILLAGERS(EntityType.ZOMBIE),
|
public static final MACreature ZOMBIEVILLAGER = new MACreature("zombievillager", EntityType.ZOMBIE);
|
||||||
BABYZOMBIEVILLAGER(EntityType.ZOMBIE),BABYZOMBIEVILLAGERS(EntityType.ZOMBIE),
|
public static final MACreature BABYZOMBIEVILLAGER = new MACreature("babyzombievillager", EntityType.ZOMBIE);
|
||||||
|
|
||||||
// 1.6 creatures
|
// 1.6 creatures
|
||||||
HORSE(EntityType.HORSE), HORSES(EntityType.HORSE),
|
public static final MACreature HORSE = new MACreature("horse", EntityType.HORSE);
|
||||||
DONKEY(EntityType.HORSE), DONKEYS(EntityType.HORSE),
|
public static final MACreature DONKEY = new MACreature("donkey", EntityType.HORSE);
|
||||||
MULE(EntityType.HORSE), MULES(EntityType.HORSE),
|
public static final MACreature MULE = new MACreature("mule", EntityType.HORSE);
|
||||||
SKELETONHORSE(EntityType.HORSE), SKELETONHORSES(EntityType.HORSE),
|
public static final MACreature SKELETONHORSE = new MACreature("skeletonhorse", EntityType.HORSE);
|
||||||
UNDEADHORSE(EntityType.HORSE), UNDEADHORSES(EntityType.HORSE);
|
public static final MACreature UNDEADHORSE = new MACreature("undeadhorse", EntityType.HORSE);
|
||||||
|
|
||||||
|
private static Map<String,MACreature> map;
|
||||||
|
static {
|
||||||
|
map = new HashMap<>();
|
||||||
|
for (EntityType type : EntityType.values()) {
|
||||||
|
// Instantiating a new creature registers it
|
||||||
|
new MACreature(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private List<DyeColor> colors = Arrays.asList(DyeColor.values());
|
private List<DyeColor> colors = Arrays.asList(DyeColor.values());
|
||||||
|
private String name;
|
||||||
|
private String plural;
|
||||||
private EntityType type;
|
private EntityType type;
|
||||||
|
|
||||||
private MACreature(EntityType type) {
|
public MACreature(String name, String plural, EntityType type) {
|
||||||
|
this.name = name;
|
||||||
|
this.plural = (plural != null) ? plural : name;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
|
||||||
|
register();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MACreature(String name, EntityType type) {
|
||||||
|
this(name, name + "s", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MACreature(EntityType type) {
|
||||||
|
this(
|
||||||
|
type.name().toLowerCase().replaceAll("[-_\\.]", ""),
|
||||||
|
type.name().toLowerCase().replaceAll("[-_\\.]", "") + "s",
|
||||||
|
type
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void register() {
|
||||||
|
map.put(name, this);
|
||||||
|
map.put(plural, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public EntityType getType() {
|
public EntityType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MACreature fromString(String string) {
|
public static MACreature fromString(String string) {
|
||||||
return WaveUtils.getEnumFromString(MACreature.class, string.replaceAll("[-_\\.]", ""));
|
return map.get(string.replaceAll("[-_\\.]", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
public LivingEntity spawn(Arena arena, World world, Location loc) {
|
public LivingEntity spawn(Arena arena, World world, Location loc) {
|
||||||
LivingEntity e = (LivingEntity) world.spawnEntity(loc, type);
|
LivingEntity e = (LivingEntity) world.spawnEntity(loc, type);
|
||||||
e.getEquipment().clear();
|
e.getEquipment().clear();
|
||||||
|
|
||||||
switch (this) {
|
switch (this.name) {
|
||||||
case SHEEP:
|
case "sheep":
|
||||||
((Sheep) e).setColor(colors.get(MobArena.random.nextInt(colors.size())));
|
((Sheep) e).setColor(colors.get(MobArena.random.nextInt(colors.size())));
|
||||||
break;
|
break;
|
||||||
case EXPLODINGSHEEP:
|
case "explodingsheep":
|
||||||
arena.getMonsterManager().addExplodingSheep(e);
|
arena.getMonsterManager().addExplodingSheep(e);
|
||||||
((Sheep) e).setColor(DyeColor.RED);
|
((Sheep) e).setColor(DyeColor.RED);
|
||||||
break;
|
break;
|
||||||
case POWEREDCREEPERS:
|
case "poweredcreeper":
|
||||||
((Creeper) e).setPowered(true);
|
((Creeper) e).setPowered(true);
|
||||||
break;
|
break;
|
||||||
case ANGRYWOLVES:
|
case "angrywolf":
|
||||||
((Wolf) e).setAngry(true);
|
((Wolf) e).setAngry(true);
|
||||||
break;
|
break;
|
||||||
case SLIME:
|
case "slime":
|
||||||
case SLIMES:
|
case "magmacube":
|
||||||
case MAGMACUBE:
|
|
||||||
case MAGMACUBES:
|
|
||||||
((Slime) e).setSize( (1 + MobArena.random.nextInt(3)) );
|
((Slime) e).setSize( (1 + MobArena.random.nextInt(3)) );
|
||||||
break;
|
break;
|
||||||
case SLIMETINY:
|
case "slimetiny":
|
||||||
case SLIMESTINY:
|
case "magmacubetiny":
|
||||||
case MAGMACUBETINY:
|
|
||||||
case MAGMACUBESTINY:
|
|
||||||
((Slime) e).setSize(1);
|
((Slime) e).setSize(1);
|
||||||
break;
|
break;
|
||||||
case SLIMESMALL:
|
case "slimesmall":
|
||||||
case SLIMESSMALL:
|
case "magmacubesmall":
|
||||||
case MAGMACUBESMALL:
|
|
||||||
case MAGMACUBESSMALL:
|
|
||||||
((Slime) e).setSize(2);
|
((Slime) e).setSize(2);
|
||||||
break;
|
break;
|
||||||
case SLIMEBIG:
|
case "slimebig":
|
||||||
case SLIMESBIG:
|
case "magmacubebig":
|
||||||
case MAGMACUBEBIG:
|
|
||||||
case MAGMACUBESBIG:
|
|
||||||
((Slime) e).setSize(3);
|
((Slime) e).setSize(3);
|
||||||
break;
|
break;
|
||||||
case SLIMEHUGE:
|
case "slimehuge":
|
||||||
case SLIMESHUGE:
|
case "magmacubehuge":
|
||||||
case MAGMACUBEHUGE:
|
|
||||||
case MAGMACUBESHUGE:
|
|
||||||
((Slime) e).setSize(4);
|
((Slime) e).setSize(4);
|
||||||
break;
|
break;
|
||||||
case SKELETON:
|
case "skeleton":
|
||||||
case SKELETONS:
|
e.getEquipment().setItemInHand(new ItemStack(Material.BOW, 1));
|
||||||
((Skeleton) e).getEquipment().setItemInHand(new ItemStack(Material.BOW, 1));
|
break;
|
||||||
break;
|
case "zombiepigman":
|
||||||
case ZOMBIEPIGMAN:
|
e.getEquipment().setItemInHand(new ItemStack(Material.GOLD_SWORD, 1));
|
||||||
case ZOMBIEPIGMEN:
|
break;
|
||||||
((PigZombie) e).getEquipment().setItemInHand(new ItemStack(Material.GOLD_SWORD, 1));
|
case "zombievillager":
|
||||||
break;
|
|
||||||
case ZOMBIEVILLAGER:
|
|
||||||
case ZOMBIEVILLAGERS:
|
|
||||||
((Zombie) e).setVillager(true);
|
((Zombie) e).setVillager(true);
|
||||||
break;
|
break;
|
||||||
case BABYZOMBIEVILLAGER:
|
case "babyzombievillager":
|
||||||
case BABYZOMBIEVILLAGERS:
|
|
||||||
((Zombie) e).setVillager(true);
|
((Zombie) e).setVillager(true);
|
||||||
case BABYZOMBIE:
|
case "babyzombie":
|
||||||
case BABYZOMBIES:
|
case "babypigman":
|
||||||
case BABYPIGMAN:
|
|
||||||
case BABYPIGMEN:
|
|
||||||
((Zombie) e).setBaby(true);
|
((Zombie) e).setBaby(true);
|
||||||
break;
|
break;
|
||||||
case WITHERSKELETON:
|
case "witherskeleton":
|
||||||
case WITHERSKELETONS:
|
e.getEquipment().setItemInHand(new ItemStack(Material.STONE_SWORD, 1));
|
||||||
((Skeleton) e).getEquipment().setItemInHand(new ItemStack(Material.STONE_SWORD, 1));
|
|
||||||
((Skeleton) e).setSkeletonType(SkeletonType.WITHER);
|
((Skeleton) e).setSkeletonType(SkeletonType.WITHER);
|
||||||
break;
|
break;
|
||||||
case HORSE:
|
case "horse":
|
||||||
case HORSES:
|
|
||||||
((Horse) e).setVariant(Horse.Variant.HORSE);
|
((Horse) e).setVariant(Horse.Variant.HORSE);
|
||||||
break;
|
break;
|
||||||
case DONKEY:
|
case "donkey":
|
||||||
case DONKEYS:
|
|
||||||
((Horse) e).setVariant(Horse.Variant.DONKEY);
|
((Horse) e).setVariant(Horse.Variant.DONKEY);
|
||||||
break;
|
break;
|
||||||
case MULE:
|
case "mule":
|
||||||
case MULES:
|
|
||||||
((Horse) e).setVariant(Horse.Variant.MULE);
|
((Horse) e).setVariant(Horse.Variant.MULE);
|
||||||
break;
|
break;
|
||||||
case SKELETONHORSE:
|
case "skeletonhorse":
|
||||||
case SKELETONHORSES:
|
|
||||||
((Horse) e).setVariant(Horse.Variant.SKELETON_HORSE);
|
((Horse) e).setVariant(Horse.Variant.SKELETON_HORSE);
|
||||||
break;
|
break;
|
||||||
case UNDEADHORSE:
|
case "undeadhorse":
|
||||||
case UNDEADHORSES:
|
|
||||||
((Horse) e).setVariant(Horse.Variant.UNDEAD_HORSE);
|
((Horse) e).setVariant(Horse.Variant.UNDEAD_HORSE);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -32,14 +32,14 @@ public class SpecialWave extends AbstractWave
|
|||||||
}
|
}
|
||||||
|
|
||||||
int amount;
|
int amount;
|
||||||
switch (entry.getValue()) {
|
switch (entry.getValue().getName()) {
|
||||||
case POWEREDCREEPERS:
|
case "poweredcreeper":
|
||||||
case ZOMBIEPIGMEN:
|
case "zombiepigman":
|
||||||
case ANGRYWOLVES: amount = playerCount * 2; break;
|
case "angrywolf": amount = playerCount * 2; break;
|
||||||
case SLIMES: amount = playerCount * 4; break;
|
case "slime": amount = playerCount * 4; break;
|
||||||
case GIANTS:
|
case "giant":
|
||||||
case GHASTS: amount = 2;
|
case "ghast": amount = 2; break;
|
||||||
default: amount = playerCount + 1; break;
|
default: amount = playerCount + 1; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
amount = (int) Math.max(1D, amount * super.getAmountMultiplier());
|
amount = (int) Math.max(1D, amount * super.getAmountMultiplier());
|
||||||
|
|||||||
Reference in New Issue
Block a user