package net.glowstone.entity.passive; import com.flowpowered.network.Message; import net.glowstone.entity.GlowAmbient; import net.glowstone.entity.meta.MetadataIndex; 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.Sound; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.entity.Bat; import org.bukkit.entity.EntityType; import java.util.LinkedList; import java.util.List; import java.util.UUID; public class GlowBat extends GlowAmbient implements Bat { public GlowBat(Location location) { super(location, 6); setSize(0.5F, 0.9F); } @Override public List<Message> createSpawnMessage() { List<Message> result = new LinkedList<>(); // spawn mob double x = location.getX(); double y = location.getY(); double z = location.getZ(); int yaw = Position.getIntYaw(location); int pitch = Position.getIntPitch(location); result.add(new SpawnMobMessage(id, UUID.randomUUID(), getType().getTypeId(), x, y, z, yaw, pitch, pitch, 0, 0, 0, metadata.getEntryList())); //TODO 1.9 - Real UUID // head facing result.add(new EntityHeadRotationMessage(id, yaw)); return result; } @Override public boolean isAwake() { return metadata.getByte(MetadataIndex.BAT_HANGING) == 1; } @Override public void setAwake(boolean isAwake) { metadata.set(MetadataIndex.BAT_HANGING, (byte) (isAwake ? 1 : 0)); } @Override public EntityType getType() { return EntityType.BAT; } @Override public Location getOrigin() { return null; } @Override public AttributeInstance getAttribute(Attribute attribute) { return null; } @Override public boolean isGliding() { return false; } @Override public void setGliding(boolean b) { } @Override public void setAI(boolean b) { } @Override public boolean hasAI() { return false; } @Override public void setCollidable(boolean b) { } @Override public boolean isCollidable() { return false; } @Override public int getArrowsStuck() { return 0; } @Override public void setArrowsStuck(int i) { } @Override protected Sound getHurtSound() { return Sound.ENTITY_BAT_HURT; } @Override protected Sound getDeathSound() { return Sound.ENTITY_BAT_DEATH; } @Override protected Sound getAmbientSound() { return Sound.ENTITY_BAT_AMBIENT; } }