OSDN Git Service

競合確認
[chemicraft/chemicraft.git] / common / chemicraft / tileentity / TileEntityChemicalCombinationTable.java
index d0d3607..35b2dcb 100644 (file)
@@ -2,21 +2,24 @@ 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 java.util.Arrays;
+
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.network.packet.Packet;
+import net.minecraft.tileentity.TileEntity;
+import chemicraft.ChemiCraft;
+import chemicraft.ChemiCraftData;
 import chemicraft.inventory.InventoryChemicalCombinationTableMaterial;
 import chemicraft.inventory.InventoryChemicalCombinationTableResult;
 import chemicraft.system.PacketHandler;
+import chemicraft.util.ComparatorItemStack;
 
 import com.google.common.io.ByteArrayDataInput;
 
-import cpw.mods.fml.common.Side;
-import cpw.mods.fml.common.asm.SideOnly;
 import cpw.mods.fml.common.network.PacketDispatcher;
 
 public class TileEntityChemicalCombinationTable extends TileEntity {
@@ -30,9 +33,16 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
 
        private ItemStack dropItems;
 
+       private boolean isProvidePower;
+
        @Override
        public void updateEntity(){
                super.updateEntity();
+               if (this.isProvidePower && !this.worldObj.isRemote) {
+                       this.field_00001();
+                       this.isProvidePower = false;
+                       PacketDispatcher.sendPacketToAllPlayers(this.getDescriptionPacket());
+               }
        }
 
        @Override
@@ -69,6 +79,8 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                for(int i = 0;i < this.atomsListSize;i++){
                        this.atomsAmountList.add(par1.getInteger("atomsAmountList" + i));
                }
+
+               this.isProvidePower = par1.getBoolean("isProvidePower");
        }
 
        @Override
@@ -111,6 +123,8 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
 
                this.atomsListSize = this.atomsList.size();
                par1.setInteger("atomsListSize", this.atomsListSize);
+
+               par1.setBoolean("isProvidePower", this.isProvidePower);
        }
 
        @Override
@@ -154,9 +168,11 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
 
                        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.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord + 1, this.zCoord, itemstack));
                        }
                        this.dropItems = null;
+
+                       this.isProvidePower = data.readBoolean();
                } catch (Exception e) {
                        e.printStackTrace();
                }
@@ -223,12 +239,13 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                                dos.writeInt(0);
                        }
                        this.dropItems = null;
+
+                       dos.writeBoolean(this.isProvidePower);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
 
-       @SideOnly(Side.CLIENT)
        public void setAtoms(String par1, int par2){
                if (this.atomsList.indexOf(par1) != -1){
                        int var1 = this.atomsList.indexOf(par1);
@@ -237,7 +254,7 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                        this.atomsList.add(par1);
                        this.atomsAmountList.add(par2);
                }
-               PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
+               PacketDispatcher.sendPacketToAllPlayers(this.getDescriptionPacket());
        }
 
        public void setDropItems(ItemStack par1ItemStack){
@@ -269,6 +286,70 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                this.atomsAmountList.clear();
        }
 
+       public void setProvidePower(boolean par1) {
+               this.isProvidePower = par1;
+       }
+
+       public boolean getProvidePower() {
+               return this.isProvidePower;
+       }
+
+       public void field_00001() {
+               IInventory inv = this.getInvMaterial();
+               ItemStack[] stacks = new ItemStack[inv.getSizeInventory()];
+               for(int i = 0;i < stacks.length;i++){
+                       if(inv.getStackInSlot(i) != null){
+                               stacks[i] = inv.getStackInSlot(i);
+                       }
+               }
+               Arrays.sort(stacks, new ComparatorItemStack());
+               stacks = ChemiCraft.instance.arrayAuxiliary.deleteNull(stacks);
+
+               for(int i = 0;i < stacks.length;i++){
+                       if(stacks[i].stackSize > 1){
+                               this.setAtoms(ChemiCraftData.ATOMSLIST[stacks[i].getItemDamage()], stacks[i].stackSize);
+                       }else{
+                               this.setAtoms(ChemiCraftData.ATOMSLIST[stacks[i].getItemDamage()], 1);
+                       }
+               }
+
+               for(int i = 0;i < inv.getSizeInventory();i++){
+                       inv.setInventorySlotContents(i, null);
+               }
+       }
+
+       public void field_00002() {
+               ArrayList<String> var1 = this.getAtomsList();
+               ArrayList<Integer> var2 = this.getAtomsAmountList();
+
+               for (int i = 0;i < var1.size();i++) {
+                       for (int j = 0;j < ChemiCraftData.ATOMSLIST.length;j++) {
+                               if (var1.get(i).equals(ChemiCraftData.ATOMSLIST[j])) {
+                                       int var3 = var2.get(i);
+                                       while(var3 > 0){
+                                               if(var3 > 64){
+                                                       ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, 64, j);
+                                                       this.setDropItems(itemstack);
+                                                       PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
+                                                       var3 -= 64;
+                                               }else{
+                                                       ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, var3, j);
+                                                       this.setDropItems(itemstack);
+                                                       PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
+                                                       var3 = 0;
+                                               }
+                                       }
+                                       break;
+                               }
+                       }
+               }
+               IInventory invr = this.getInvResult();
+               if (invr.getStackInSlot(0) != null) {
+                       invr.setInventorySlotContents(0, null);
+               }
+               this.emptytoAtomsList();
+       }
+
        protected boolean isNumber(String par1){
                try {
                        int var1 = Integer.valueOf(new String(par1));