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.item.EntityItem; 007 import net.minecraft.item.ItemStack; 008 import net.minecraft.util.MathHelper; 009 010 public class Packet21PickupSpawn extends Packet 011 { 012 /** Unique entity ID. */ 013 public int entityId; 014 015 /** The item X position. */ 016 public int xPosition; 017 018 /** The item Y position. */ 019 public int yPosition; 020 021 /** The item Z position. */ 022 public int zPosition; 023 024 /** The item rotation. */ 025 public byte rotation; 026 027 /** The item pitch. */ 028 public byte pitch; 029 030 /** The item roll. */ 031 public byte roll; 032 public ItemStack itemID; 033 034 public Packet21PickupSpawn() {} 035 036 public Packet21PickupSpawn(EntityItem par1EntityItem) 037 { 038 this.entityId = par1EntityItem.entityId; 039 this.itemID = par1EntityItem.item.copy(); 040 this.xPosition = MathHelper.floor_double(par1EntityItem.posX * 32.0D); 041 this.yPosition = MathHelper.floor_double(par1EntityItem.posY * 32.0D); 042 this.zPosition = MathHelper.floor_double(par1EntityItem.posZ * 32.0D); 043 this.rotation = (byte)((int)(par1EntityItem.motionX * 128.0D)); 044 this.pitch = (byte)((int)(par1EntityItem.motionY * 128.0D)); 045 this.roll = (byte)((int)(par1EntityItem.motionZ * 128.0D)); 046 } 047 048 /** 049 * Abstract. Reads the raw packet data from the data stream. 050 */ 051 public void readPacketData(DataInputStream par1DataInputStream) throws IOException 052 { 053 this.entityId = par1DataInputStream.readInt(); 054 this.itemID = readItemStack(par1DataInputStream); 055 this.xPosition = par1DataInputStream.readInt(); 056 this.yPosition = par1DataInputStream.readInt(); 057 this.zPosition = par1DataInputStream.readInt(); 058 this.rotation = par1DataInputStream.readByte(); 059 this.pitch = par1DataInputStream.readByte(); 060 this.roll = par1DataInputStream.readByte(); 061 } 062 063 /** 064 * Abstract. Writes the raw packet data to the data stream. 065 */ 066 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException 067 { 068 par1DataOutputStream.writeInt(this.entityId); 069 writeItemStack(this.itemID, par1DataOutputStream); 070 par1DataOutputStream.writeInt(this.xPosition); 071 par1DataOutputStream.writeInt(this.yPosition); 072 par1DataOutputStream.writeInt(this.zPosition); 073 par1DataOutputStream.writeByte(this.rotation); 074 par1DataOutputStream.writeByte(this.pitch); 075 par1DataOutputStream.writeByte(this.roll); 076 } 077 078 /** 079 * Passes this Packet on to the NetHandler for processing. 080 */ 081 public void processPacket(NetHandler par1NetHandler) 082 { 083 par1NetHandler.handlePickupSpawn(this); 084 } 085 086 /** 087 * Abstract. Return the size of the packet (not counting the header). 088 */ 089 public int getPacketSize() 090 { 091 return 24; 092 } 093 }