| 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; |
| import java.util.UUID; |
| |
| /** |
| * Represents a creature entity such as a pig. |
| */ |
| public 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, double maxHealth) { |
| super(location, maxHealth); |
| 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, getUniqueId(), 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; |
| } |
| } |