package net.glowstone.entity; import com.flowpowered.networking.Message; import net.glowstone.net.message.play.entity.EntityHeadRotationMessage; import net.glowstone.net.message.play.entity.SpawnMobMessage; import net.glowstone.util.Position; import org.bukkit.Location; import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import java.util.LinkedList; import java.util.List; /** * Represents a monster such as a creeper. * @author Graham Edgecombe */ public final class GlowCreature extends GlowLivingEntity implements Creature { /** * The type of monster. */ private final EntityType type; /** * The monster's target. */ private LivingEntity target; /** * Creates a new monster. * @param location The location of the monster. * @param type The type of monster. */ public GlowCreature(Location location, EntityType type) { super(location); this.type = type; } @Override public EntityType getType() { return type; } @Override public List<Message> createSpawnMessage() { List<Message> result = new LinkedList<>(); // spawn mob int x = Position.getIntX(location); int y = Position.getIntY(location); int z = Position.getIntZ(location); int yaw = Position.getIntYaw(location); int pitch = Position.getIntPitch(location); result.add(new SpawnMobMessage(id, type.getTypeId(), x, y, z, yaw, pitch, pitch, 0, 0, 0, metadata.getEntryList())); // head facing result.add(new EntityHeadRotationMessage(id, yaw)); // todo: equipment //result.add(createEquipmentMessage()); return result; } @Override public void setTarget(LivingEntity target) { this.target = target; } @Override public LivingEntity getTarget() { return target; } }