package net.glowstone.entity.monster; import com.flowpowered.network.Message; import net.glowstone.entity.ai.EntityDirector; import net.glowstone.entity.ai.HostileMobState; import net.glowstone.entity.ai.MobState; import net.glowstone.entity.meta.MetadataIndex; import net.glowstone.util.SoundUtil; import org.bukkit.Location; import org.bukkit.Sound; import org.bukkit.entity.EntityType; import org.bukkit.entity.Villager.Profession; import org.bukkit.entity.Zombie; import java.util.List; public class GlowZombie extends GlowMonster implements Zombie { private boolean canBreakDoors; public GlowZombie(Location loc) { this(loc, EntityType.ZOMBIE); } public GlowZombie(Location loc, EntityType type) { super(loc, type, 20); setBoundingBox(0.6, 1.8); if (type != null) { EntityDirector.registerEntityMobState(type, MobState.IDLE, "look_around"); EntityDirector.registerEntityMobState(type, MobState.IDLE, "look_player"); EntityDirector.registerEntityMobState(type, HostileMobState.TARGETING, "follow_player"); } setState(MobState.IDLE); } @Override public List<Message> createSpawnMessage() { //TODO - 1.11 Move this to ZombieVillager //metadata.set(MetadataIndex.ZOMBIE_IS_CONVERTING, conversionTime > 0); return super.createSpawnMessage(); } @Override public boolean isBaby() { return metadata.getBoolean(MetadataIndex.ZOMBIE_IS_CHILD); } @Override public void setBaby(boolean value) { metadata.set(MetadataIndex.ZOMBIE_IS_CHILD, value); } @Override public boolean isVillager() { return false; } @Override public void setVillager(boolean value) { //Field has been removed as of 1.11 } @Override public void setVillagerProfession(Profession profession) { //Field has been removed as of 1.11 } @Override public Profession getVillagerProfession() { //Field has been removed as of 1.11 return Profession.NORMAL; } public boolean isCanBreakDoors() { return canBreakDoors; } public void setCanBreakDoors(boolean canBreakDoors) { this.canBreakDoors = canBreakDoors; } @Override protected float getSoundPitch() { if (isBaby()) { return SoundUtil.randomReal(0.2F) + 1.5F; } return super.getSoundPitch(); } @Override protected Sound getHurtSound() { return Sound.ENTITY_ZOMBIE_HURT; } @Override protected Sound getDeathSound() { return Sound.ENTITY_ZOMBIE_DEATH; } @Override protected Sound getAmbientSound() { return Sound.ENTITY_ZOMBIE_AMBIENT; } }