    001    package net.minecraft.network.packet;
    002
    003    import java.io.DataInputStream;
    004    import java.io.DataOutputStream;
    005    import java.io.IOException;
    006    import net.minecraft.entity.Entity;
    007    import net.minecraft.entity.effect.EntityLightningBolt;
    008    import net.minecraft.util.MathHelper;
    009
    010    public class Packet71Weather extends Packet
    011    {
    012        public int entityID;
    013        public int posX;
    014        public int posY;
    015        public int posZ;
    016        public int isLightningBolt;
    017
    018        public Packet71Weather() {}
    019
    020        public Packet71Weather(Entity par1Entity)
    021        {
    022            this.entityID = par1Entity.entityId;
    023            this.posX = MathHelper.floor_double(par1Entity.posX * 32.0D);
    024            this.posY = MathHelper.floor_double(par1Entity.posY * 32.0D);
    025            this.posZ = MathHelper.floor_double(par1Entity.posZ * 32.0D);
    026
    027            if (par1Entity instanceof EntityLightningBolt)
    028            {
    029                this.isLightningBolt = 1;
    030            }
    031        }
    032
    033        /**
    034         * Abstract. Reads the raw packet data from the data stream.
    035         */
    036        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
    037        {
    038            this.entityID = par1DataInputStream.readInt();
    039            this.isLightningBolt = par1DataInputStream.readByte();
    040            this.posX = par1DataInputStream.readInt();
    041            this.posY = par1DataInputStream.readInt();
    042            this.posZ = par1DataInputStream.readInt();
    043        }
    044
    045        /**
    046         * Abstract. Writes the raw packet data to the data stream.
    047         */
    048        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
    049        {
    050            par1DataOutputStream.writeInt(this.entityID);
    051            par1DataOutputStream.writeByte(this.isLightningBolt);
    052            par1DataOutputStream.writeInt(this.posX);
    053            par1DataOutputStream.writeInt(this.posY);
    054            par1DataOutputStream.writeInt(this.posZ);
    055        }
    056
    057        /**
    058         * Passes this Packet on to the NetHandler for processing.
    059         */
    060        public void processPacket(NetHandler par1NetHandler)
    061        {
    062            par1NetHandler.handleWeather(this);
    063        }
    064
    065        /**
    066         * Abstract. Return the size of the packet (not counting the header).
    067         */
    068        public int getPacketSize()
    069        {
    070            return 17;
    071        }
    072    }