OSDN Git Service

化合台完成
[chemicraft/chemicraft.git] / common / chemicraft / tileentity / TileEntityChemicalCombinationTable.java
index c738a44..d0d3607 100644 (file)
@@ -3,12 +3,12 @@ package chemicraft.tileentity;
 import java.io.DataOutputStream;
 import java.util.ArrayList;
 
+import net.minecraft.src.EntityItem;
 import net.minecraft.src.ItemStack;
 import net.minecraft.src.NBTTagCompound;
 import net.minecraft.src.NBTTagList;
 import net.minecraft.src.Packet;
 import net.minecraft.src.TileEntity;
-import net.minecraft.src.WorldServer;
 import chemicraft.inventory.InventoryChemicalCombinationTableMaterial;
 import chemicraft.inventory.InventoryChemicalCombinationTableResult;
 import chemicraft.system.PacketHandler;
@@ -28,17 +28,11 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
        private ArrayList<Integer> atomsAmountList = new ArrayList<Integer>();
        private int atomsListSize = 0;
 
-       int t = 0;
+       private ItemStack dropItems;
 
        @Override
        public void updateEntity(){
                super.updateEntity();
-               t++;
-               if(t % 5 == 0 && this.worldObj instanceof WorldServer){
-                       System.out.println(this.atomsListSize);
-                       System.out.println(this.atomsList);
-                       System.out.println(this.atomsAmountList);
-               }
        }
 
        @Override
@@ -50,7 +44,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                        NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
                        int var5 = var4.getByte("Slot") & 255;
 
-                       if (var5 >= 0 && var5 < this.invm.getSizeInventory())
+                       if  (var5 >= 0 && var5 < this.invm.getSizeInventory())
                        {
                                this.invm.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
                        }
@@ -62,7 +56,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                        NBTTagCompound var7 = (NBTTagCompound)var6.tagAt(var3);
                        int var8 = var7.getByte("Slot2") & 255;
 
-                       if (var8 >= 0 && var8 < this.invr.getSizeInventory())
+                       if  (var8 >= 0 && var8 < this.invr.getSizeInventory())
                        {
                                this.invr.setInventorySlotContents(var8, ItemStack.loadItemStackFromNBT(var7));
                        }
@@ -70,10 +64,10 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
 
                this.atomsListSize = par1.getInteger("atomsListSize");
                for(int i = 0;i < this.atomsListSize;i++){
-                       this.atomsList.add(par1.getString("atomsList") + i);
+                       this.atomsList.add(par1.getString("atomsList" + i));
                }
                for(int i = 0;i < this.atomsListSize;i++){
-                       this.atomsAmountList.add(par1.getInteger("atomsAmountList") + i);
+                       this.atomsAmountList.add(par1.getInteger("atomsAmountList" + i));
                }
        }
 
@@ -83,7 +77,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                NBTTagList var2 = new NBTTagList();
                for (int var3 = 0; var3 < this.invm.getSizeInventory(); ++var3)
                {
-                       if (this.invm.getStackInSlot(var3) != null)
+                       if  (this.invm.getStackInSlot(var3) != null)
                        {
                                NBTTagCompound var4 = new NBTTagCompound();
                                var4.setByte("Slot", (byte)var3);
@@ -96,7 +90,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                NBTTagList var5 = new NBTTagList();
                for (int var6 = 0; var6 < this.invr.getSizeInventory(); ++var6)
                {
-                       if (this.invr.getStackInSlot(var6) != null)
+                       if  (this.invr.getStackInSlot(var6) != null)
                        {
                                NBTTagCompound var7 = new NBTTagCompound();
                                var7.setByte("Slot2", (byte)var6);
@@ -109,15 +103,14 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                this.atomsList.trimToSize();
                this.atomsAmountList.trimToSize();
                for(int i = 0;i < this.atomsList.size();i++){
-                       par1.setString("atoms" + i, this.atomsList.get(i));
+                       par1.setString("atomsList" + i, this.atomsList.get(i));
                }
                for(int i = 0;i < this.atomsAmountList.size();i++){
-                       par1.setInteger("atomsAmount" + i, this.atomsAmountList.get(i));
+                       par1.setInteger("atomsAmountList" + i, this.atomsAmountList.get(i));
                }
 
                this.atomsListSize = this.atomsList.size();
                par1.setInteger("atomsListSize", this.atomsListSize);
-               //System.out.println();
        }
 
        @Override
@@ -131,7 +124,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                                int id = data.readInt();
                                int size = data.readByte();
                                int damage = data.readInt();
-                               if(id != 0 && size != 0){
+                               if (id != 0 && size != 0){
                                        this.invm.setInventorySlotContents(i, new ItemStack(id, size, damage));
                                }else{
                                        this.invm.setInventorySlotContents(i, null);
@@ -142,7 +135,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                                int id = data.readInt();
                                int size = data.readByte();
                                int damage = data.readInt();
-                               if(id != 0 && size != 0){
+                               if (id != 0 && size != 0){
                                        this.invr.setInventorySlotContents(i, new ItemStack(id, size, damage));
                                }else{
                                        this.invr.setInventorySlotContents(i, null);
@@ -158,6 +151,12 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                        for(int i = 0;i < this.atomsListSize;i++){
                                this.atomsAmountList.add(data.readInt());
                        }
+
+                       ItemStack itemstack = new ItemStack(data.readInt(), data.readByte(), data.readInt());
+                       if(itemstack.itemID != 0 && !this.worldObj.isRemote){
+                               this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord, this.zCoord, itemstack));
+                       }
+                       this.dropItems = null;
                } catch (Exception e) {
                        e.printStackTrace();
                }
@@ -170,7 +169,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                                int size = 0;
                                int damage  = 0;
                                ItemStack itemstack = this.invm.getStackInSlot(i);
-                               if(itemstack != null){
+                               if (itemstack != null){
                                        id = itemstack.itemID;
                                        size = itemstack.stackSize;
                                        damage = itemstack.getItemDamage();
@@ -189,7 +188,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                                int size = 0;
                                int damage  = 0;
                                ItemStack itemstack = this.invr.getStackInSlot(i);
-                               if(itemstack != null){
+                               if (itemstack != null){
                                        id = itemstack.itemID;
                                        size = itemstack.stackSize;
                                        damage = itemstack.getItemDamage();
@@ -210,6 +209,20 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                        for(int i = 0;i < this.atomsAmountList.size();i++){
                                dos.writeInt(this.atomsAmountList.get(i));
                        }
+
+                       if (this.dropItems != null){
+                               int id = this.dropItems.itemID;
+                               int size = this.dropItems.stackSize;
+                               int damage = this.dropItems.getItemDamage();
+                               dos.writeInt(id);
+                               dos.writeByte(size);
+                               dos.writeInt(damage);
+                       }else{
+                               dos.writeInt(0);
+                               dos.writeByte(0);
+                               dos.writeInt(0);
+                       }
+                       this.dropItems = null;
                } catch (Exception e) {
                        e.printStackTrace();
                }
@@ -217,7 +230,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
 
        @SideOnly(Side.CLIENT)
        public void setAtoms(String par1, int par2){
-               if(this.atomsList.indexOf(par1) != -1){
+               if (this.atomsList.indexOf(par1) != -1){
                        int var1 = this.atomsList.indexOf(par1);
                        this.atomsAmountList.set(var1, this.atomsAmountList.get(var1) + par2);
                }else{
@@ -227,10 +240,14 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
        }
 
+       public void setDropItems(ItemStack par1ItemStack){
+               this.dropItems = par1ItemStack;
+       }
+
        public String getAtoms(){
                StringBuffer var1 = new StringBuffer();
                for(int i = 0;i < this.atomsList.size();i++){
-                       if(this.atomsAmountList.get(i) != 1){
+                       if (this.atomsAmountList.get(i) != 1){
                                var1.append(this.atomsList.get(i) + this.atomsAmountList.get(i));
                        }else{
                                var1.append(this.atomsList.get(i));
@@ -247,7 +264,11 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                return this.atomsAmountList;
        }
 
-       @SuppressWarnings("unused")
+       public void emptytoAtomsList(){
+               this.atomsList.clear();
+               this.atomsAmountList.clear();
+       }
+
        protected boolean isNumber(String par1){
                try {
                        int var1 = Integer.valueOf(new String(par1));