package net.glowstone.entity.passive; import com.flowpowered.networking.Message; import net.glowstone.entity.GlowAmbient; import net.glowstone.entity.meta.MetadataIndex; import net.glowstone.entity.meta.MetadataMap; import net.glowstone.net.message.play.entity.EntityHeadRotationMessage; import net.glowstone.net.message.play.entity.EntityMetadataMessage; import net.glowstone.net.message.play.entity.SpawnMobMessage; import net.glowstone.util.Position; import org.bukkit.Location; import org.bukkit.entity.Bat; import org.bukkit.entity.EntityType; import java.util.LinkedList; import java.util.List; public class GlowBat extends GlowAmbient implements Bat { private boolean isAwake; public GlowBat(Location location) { super(location); } @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, getType().getTypeId(), x, y, z, yaw, pitch, pitch, 0, 0, 0, metadata.getEntryList())); // head facing result.add(new EntityHeadRotationMessage(id, yaw)); MetadataMap map = new MetadataMap(GlowBat.class); map.set(MetadataIndex.BAT_HANGING, (byte) (this.isAwake ? 1 : 0)); result.add(new EntityMetadataMessage(id, map.getEntryList())); return result; } @Override public boolean isAwake() { return isAwake; } @Override public void setAwake(boolean isAwake) { this.isAwake = isAwake; } @Override public EntityType getType() { return EntityType.BAT; } }