diff --git a/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityInfected.java b/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityInfected.java index 8fe162e064..939b15b3de 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityInfected.java +++ b/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityInfected.java @@ -59,6 +59,8 @@ public void setInfected(boolean bool) { } } + // TODO: Should be bother allowing villager input at all? + // If it's a Villager, we need to spawn a Zombie instead. // This is kind of messy, and can be improved upon. // TODO: Improve upon. diff --git a/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityProfession.java b/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityProfession.java index c7ea093310..90cd06c1e6 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityProfession.java +++ b/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntityProfession.java @@ -9,6 +9,7 @@ import net.aufdemrand.denizencore.utilities.CoreUtilities; import org.bukkit.entity.EntityType; import org.bukkit.entity.Villager; +import org.bukkit.entity.Zombie; public class EntityProfession implements Property { @@ -17,8 +18,8 @@ public static boolean describes(dObject entity) { if (!(entity instanceof dEntity)) { return false; } - // Check if the entity is a Villager, the only EntityType that can be a Professional - return ((dEntity) entity).getBukkitEntityType() == EntityType.VILLAGER; + return ((dEntity) entity).getBukkitEntityType() == EntityType.VILLAGER + || ((dEntity) entity).getBukkitEntityType() == EntityType.ZOMBIE; } public static EntityProfession getFrom(dObject entity) { @@ -43,11 +44,19 @@ private EntityProfession(dEntity entity) { dEntity professional; private Villager.Profession getProfession() { + if (professional.getBukkitEntityType() == EntityType.ZOMBIE) { + return ((Zombie) professional.getBukkitEntity()).getVillagerProfession(); + } return ((Villager) professional.getBukkitEntity()).getProfession(); } public void setProfession(Villager.Profession profession) { - ((Villager) professional.getBukkitEntity()).setProfession(profession); + if (professional.getBukkitEntityType() == EntityType.ZOMBIE) { + ((Zombie) professional.getBukkitEntity()).setVillagerProfession(profession); + } + else { + ((Villager) professional.getBukkitEntity()).setProfession(profession); + } } @@ -57,6 +66,9 @@ public void setProfession(Villager.Profession profession) { @Override public String getPropertyString() { + if (professional.getBukkitEntityType() == EntityType.ZOMBIE && !((Zombie) professional.getBukkitEntity()).isVillager()) { + return null; + } return CoreUtilities.toLowerCase(getProfession().name()); } @@ -84,8 +96,8 @@ public String getAttribute(Attribute attribute) { // @group properties // @description // If the entity can have professions, returns the entity's profession. - // Currently, only Villager-type entities can have professions. - // Possible professions: BLACKSMITH, BUTCHER, FARMER, LIBRARIAN, PRIEST. + // Currently, only Villager-type and infected zombie entities can have professions. + // Possible professions: BLACKSMITH, BUTCHER, FARMER, LIBRARIAN, PRIEST. (Or HUSK for zombies!) // --> if (attribute.startsWith("profession")) { return new Element(CoreUtilities.toLowerCase(getProfession().name())) @@ -105,7 +117,7 @@ public void adjust(Mechanism mechanism) { // @description // Changes the entity's profession. // Currently, only Villager-type entities can have professions. - // Acceptable professions: BLACKSMITH, BUTCHER, FARMER, LIBRARIAN, PRIEST. + // Acceptable professions: BLACKSMITH, BUTCHER, FARMER, LIBRARIAN, PRIEST. (Or HUSK for zombies!) // @tags // // --> diff --git a/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntitySkeleton.java b/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntitySkeleton.java index 34daf2aa98..9f604a13cb 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntitySkeleton.java +++ b/src/main/java/net/aufdemrand/denizen/objects/properties/entity/EntitySkeleton.java @@ -67,7 +67,7 @@ public String getAttribute(Attribute attribute) { // @group properties // @description // If the entity is a skeleton, returns what type of skeleton it is. - // Can return NORMAL or WITHER. + // Can return: NORMAL, WITHER, STRAY. // --> if (attribute.startsWith("skeleton_type")) { return new Element(((Skeleton) skeleton.getBukkitEntity()) @@ -86,7 +86,7 @@ public void adjust(Mechanism mechanism) { // @input Element // @description // Changes whether a skeleton is a normal or wither type skeleton. - // Valid input: NORMAL, WITHER. + // Valid input: NORMAL, WITHER, STRAY. // @tags // // -->