package com.nisovin.magicspells.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.entity.*;
import com.nisovin.magicspells.MagicSpells;
public class EntityData {
private EntityType entityType;
private boolean flag = false;
private int var1 = 0;
private int var2 = 0;
private int var3 = 0;
public EntityData(String type) {
if (type.startsWith("baby ")) {
flag = true;
type = type.replace("baby ", "");
}
if (type.equalsIgnoreCase("human") || type.equalsIgnoreCase("player")) {
type = "player";
} else if (type.equalsIgnoreCase("wither skeleton")) {
type = "skeleton";
flag = true;
} else if (type.equalsIgnoreCase("zombie villager") || type.equalsIgnoreCase("villager zombie")) {
type = "zombie";
var1 = 1;
} else if (type.equalsIgnoreCase("powered creeper")) {
type = "creeper";
flag = true;
} else if (type.toLowerCase().startsWith("villager ")) {
String prof = type.toLowerCase().replace("villager ", "");
if (prof.matches("^[0-5]$")) {
var1 = Integer.parseInt(prof);
} else if (prof.toLowerCase().startsWith("green")) {
var1 = 5;
} else {
try {
var1 = Villager.Profession.valueOf(prof.toUpperCase()).getId();
} catch (Exception e) {
MagicSpells.error("Invalid villager profession: " + prof);
}
}
type = "villager";
} else if (type.toLowerCase().endsWith(" villager")) {
String prof = type.toLowerCase().replace(" villager", "");
if (prof.toLowerCase().startsWith("green")) {
var1 = 5;
} else {
try {
var1 = Villager.Profession.valueOf(prof.toUpperCase()).getId();
} catch (Exception e) {
MagicSpells.error("Invalid villager profession: " + prof);
}
}
type = "villager";
} else if (type.toLowerCase().endsWith(" sheep")) {
String color = type.toLowerCase().replace(" sheep", "");
if (color.equalsIgnoreCase("random")) {
var1 = -1;
} else {
try {
DyeColor dyeColor = DyeColor.valueOf(color.toUpperCase().replace(" ", "_"));
if (dyeColor != null) {
var1 = dyeColor.getWoolData();
}
} catch (IllegalArgumentException e) {
MagicSpells.error("Invalid sheep color: " + color);
}
}
type = "sheep";
} else if (type.toLowerCase().endsWith(" rabbit")) {
String rabbitType = type.toLowerCase().replace(" rabbit", "");
var1 = 0;
if (rabbitType.equals("white")) {
var1 = 1;
} else if (rabbitType.equals("black")) {
var1 = 2;
} else if (rabbitType.equals("blackwhite")) {
var1 = 3;
} else if (rabbitType.equals("gold")) {
var1 = 4;
} else if (rabbitType.equals("saltpepper")) {
var1 = 5;
} else if (rabbitType.equals("killer")) {
var1 = 99;
}
type = "rabbit";
} else if (type.toLowerCase().startsWith("wolf ")) {
String color = type.toLowerCase().replace("wolf ", "");
if (color.equals("angry")) {
var1 = -1;
} else if (color.matches("[0-9a-fA-F]+")) {
var1 = Integer.parseInt(color, 16);
}
type = "wolf";
} else if (type.toLowerCase().equalsIgnoreCase("saddled pig")) {
var1 = 1;
type = "pig";
} else if (type.equalsIgnoreCase("irongolem")) {
type = "villagergolem";
} else if (type.equalsIgnoreCase("mooshroom")) {
type = "mushroomcow";
} else if (type.equalsIgnoreCase("magmacube")) {
type = "lavaslime";
} else if (type.toLowerCase().contains("ocelot")) {
type = type.toLowerCase().replace("ocelot", "ozelot");
} else if (type.equalsIgnoreCase("snowgolem")) {
type = "snowman";
} else if (type.equalsIgnoreCase("wither")) {
type = "witherboss";
} else if (type.equalsIgnoreCase("dragon")) {
type = "enderdragon";
} else if (type.toLowerCase().startsWith("block") || type.toLowerCase().startsWith("fallingblock")) {
String data = type.split(" ")[1];
if (data.contains(":")) {
String[] subdata = data.split(":");
var1 = Integer.parseInt(subdata[0]);
var2 = Integer.parseInt(subdata[1]);
} else {
var1 = Integer.parseInt(data);
}
type = "fallingsand";
} else if (type.toLowerCase().startsWith("item")) {
String data = type.split(" ")[1];
if (data.contains(":")) {
String[] subdata = data.split(":");
var1 = Integer.parseInt(subdata[0]);
var2 = Integer.parseInt(subdata[1]);
} else {
var1 = Integer.parseInt(data);
}
type = "item";
} else if (type.toLowerCase().contains("horse")) {
List<String> data = new ArrayList<String>(Arrays.asList(type.split(" ")));
var1 = 0;
var2 = 0;
if (data.get(0).equalsIgnoreCase("horse")) {
data.remove(0);
} else if (data.size() >= 2 && data.get(1).equalsIgnoreCase("horse")) {
String t = data.remove(0).toLowerCase();
if (t.equals("donkey")) {
var1 = 1;
} else if (t.equals("mule")) {
var1 = 2;
} else if (t.equals("skeleton") || t.equals("skeletal")) {
var1 = 4;
} else if (t.equals("zombie") || t.equals("undead")) {
var1 = 3;
} else {
var1 = 0;
}
data.remove(0);
}
while (data.size() > 0) {
String d = data.remove(0);
if (d.matches("^[0-9]+$")) {
var2 = Integer.parseInt(d);
} else if (d.equalsIgnoreCase("iron")) {
var3 = 1;
} else if (d.equalsIgnoreCase("gold")) {
var3 = 2;
} else if (d.equalsIgnoreCase("diamond")) {
var3 = 3;
}
}
type = "entityhorse";
} else if (type.equalsIgnoreCase("mule")) {
var1 = 2;
type = "entityhorse";
} else if (type.equalsIgnoreCase("donkey")) {
var1 = 1;
type = "entityhorse";
} else if (type.equalsIgnoreCase("elder guardian")) {
flag = true;
type = "guardian";
}
if (type.toLowerCase().matches("ozelot [0-3]")) {
var1 = Integer.parseInt(type.split(" ")[1]);
type = "ozelot";
} else if (type.toLowerCase().equals("ozelot random") || type.toLowerCase().equals("random ozelot")) {
var1 = -1;
type = "ozelot";
}
if (type.equals("slime") || type.equals("lavaslime")) {
var1 = 1;
} else if (type.startsWith("slime") || type.startsWith("magmacube") || type.startsWith("lavaslime")) {
String[] data = type.split(" ");
type = data[0];
if (type.equals("magmacube")) type = "lavaslime";
var1 = Integer.parseInt(data[1]);
}
if (type.equals("player")) {
entityType = EntityType.PLAYER;
} else {
entityType = EntityType.fromName(type);
}
}
public EntityType getType() {
return entityType;
}
public boolean getFlag() {
return flag;
}
public int getVar1() {
return var1;
}
public int getVar2() {
return var2;
}
public int getVar3() {
return var3;
}
public Entity spawn(Location loc) {
Entity entity = loc.getWorld().spawnEntity(loc, entityType);
if (entity instanceof Ageable && flag) {
((Ageable)entity).setBaby();
}
if (entityType == EntityType.ZOMBIE) {
((Zombie)entity).setBaby(flag);
((Zombie)entity).setVillager(var1 == 1);
} else if (entityType == EntityType.SKELETON) {
if (flag) {
((Skeleton)entity).setSkeletonType(Skeleton.SkeletonType.WITHER);
}
} else if (entityType == EntityType.CREEPER) {
if (flag) {
((Creeper)entity).setPowered(true);
}
} else if (entityType == EntityType.WOLF) {
if (var1 == -1) {
((Wolf)entity).setAngry(true);
}
} else if (entityType == EntityType.OCELOT) {
if (var1 == 0) {
((Ocelot)entity).setCatType(Ocelot.Type.WILD_OCELOT);
} else if (var1 == 1) {
((Ocelot)entity).setCatType(Ocelot.Type.BLACK_CAT);
} else if (var1 == 2) {
((Ocelot)entity).setCatType(Ocelot.Type.RED_CAT);
} else if (var1 == 3) {
((Ocelot)entity).setCatType(Ocelot.Type.SIAMESE_CAT);
}
} else if (entityType == EntityType.VILLAGER) {
if (var1 == 0) {
((Villager)entity).setProfession(Villager.Profession.FARMER);
} else if (var1 == 1) {
((Villager)entity).setProfession(Villager.Profession.LIBRARIAN);
} else if (var1 == 2) {
((Villager)entity).setProfession(Villager.Profession.PRIEST);
} else if (var1 == 3) {
((Villager)entity).setProfession(Villager.Profession.BLACKSMITH);
} else if (var1 == 4) {
((Villager)entity).setProfession(Villager.Profession.BUTCHER);
}
} else if (entityType == EntityType.SLIME) {
((Slime)entity).setSize(var1);
} else if (entityType == EntityType.MAGMA_CUBE) {
((MagmaCube)entity).setSize(var1);
} else if (entityType == EntityType.PIG) {
if (var1 == 1) {
((Pig)entity).setSaddle(true);
}
} else if (entityType == EntityType.SHEEP) {
DyeColor c = DyeColor.getByWoolData((byte)var1);
if (c != null) {
((Sheep)entity).setColor(c);
}
} else if (entityType == EntityType.RABBIT) {
/*if (var1 == 0) {
((Rabbit)entity).setRabbitType(Rabbit.Type.BROWN);
} else if (var1 == 1) {
((Rabbit)entity).setRabbitType(Rabbit.Type.WHITE);
} else if (var1 == 2) {
((Rabbit)entity).setRabbitType(Rabbit.Type.BLACK);
} else if (var1 == 3) {
((Rabbit)entity).setRabbitType(Rabbit.Type.BLACK_AND_WHITE);
} else if (var1 == 4) {
((Rabbit)entity).setRabbitType(Rabbit.Type.GOLD);
} else if (var1 == 5) {
((Rabbit)entity).setRabbitType(Rabbit.Type.SALT_AND_PEPPER);
} else if (var1 == 99) {
((Rabbit)entity).setRabbitType(Rabbit.Type.THE_KILLER_BUNNY);
}*/
} else if (entityType == EntityType.GUARDIAN) {
if (flag) {
((Guardian)entity).setElder(true);
}
} else if (entityType == EntityType.HORSE) {
if (var1 == 0) {
((Horse)entity).setVariant(Horse.Variant.HORSE);
} else if (var1 == 1) {
((Horse)entity).setVariant(Horse.Variant.DONKEY);
} else if (var1 == 2) {
((Horse)entity).setVariant(Horse.Variant.MULE);
} else if (var1 == 3) {
((Horse)entity).setVariant(Horse.Variant.UNDEAD_HORSE);
} else if (var1 == 4) {
((Horse)entity).setVariant(Horse.Variant.SKELETON_HORSE);
}
}
return entity;
}
}