OSDN Git Service

とりまコミット
authormozipi <mozipi@users.sourceforge.jp>
Sat, 29 Dec 2012 03:16:21 +0000 (12:16 +0900)
committermozipi <mozipi@users.sourceforge.jp>
Sat, 29 Dec 2012 03:16:21 +0000 (12:16 +0900)
23 files changed:
common/chemicraft/ChemiCraft.java
common/chemicraft/ChemiCraftAPI.java
common/chemicraft/block/BlockChemicalCraftingTable.java [moved from common/chemicraft/block/BlockMaterialCraftingTable.java with 76% similarity]
common/chemicraft/block/BlockToolAndWeaponCraftingTable.java [moved from common/chemicraft/block/BlockToolAndMaterialCraftingTable.java with 87% similarity]
common/chemicraft/container/ContainerChemicalCraftingTable.java [new file with mode: 0644]
common/chemicraft/container/ContainerMaterialCraftingTable.java [deleted file]
common/chemicraft/gui/GuiChemicalCraftingTable.java [moved from common/chemicraft/gui/GuiMaterialCraftingTable.java with 57% similarity]
common/chemicraft/inventory/InventoryChemicalCraftingMaterial.java [new file with mode: 0644]
common/chemicraft/inventory/InventoryChemicalCraftingNBT.java [new file with mode: 0644]
common/chemicraft/inventory/InventoryChemicalCraftingResult.java [moved from common/chemicraft/inventory/InventoryMaterialCrafting.java with 62% similarity]
common/chemicraft/slot/SlotChemicalCraftingResult.java [moved from common/chemicraft/slot/SlotMaterialCraftingResult.java with 71% similarity]
common/chemicraft/system/ChemiCraftCraftingManager.java
common/chemicraft/system/CommonProxy.java
common/chemicraft/system/PacketHandler.java
common/chemicraft/tileentity/TileEntityChemicalCraftingTable.java [new file with mode: 0644]
common/chemicraft/tileentity/TileEntityMaterialCraftingTable.java [deleted file]
common/chemicraft/util/Auxiliary.java
common/chemicraft/util/ChemicalNBTRecipe.java [new file with mode: 0644]
common/chemicraft/util/ComparaterItemStackID.java [new file with mode: 0644]
common/chemicraft/util/MaterialRecipe.java [new file with mode: 0644]
common/chemicraft/util/NBTRecipe.java [deleted file]
common/chemicraft/util/NBTRecipeGrenade.java
src/chemicraft/client/ClientProxy.java

index 72b39b2..c1f226a 100644 (file)
@@ -8,9 +8,9 @@ import net.minecraft.src.Material;
 import net.minecraftforge.common.Configuration;\r
 import net.minecraftforge.common.Property;\r
 import chemicraft.block.BlockChemicalCombinationTable;\r
+import chemicraft.block.BlockChemicalCraftingTable;\r
 import chemicraft.block.BlockDecompositionTable;\r
-import chemicraft.block.BlockMaterialCraftingTable;\r
-import chemicraft.block.BlockToolAndMaterialCraftingTable;\r
+import chemicraft.block.BlockToolAndWeaponCraftingTable;\r
 import chemicraft.debug.CommandDeleteItem;\r
 import chemicraft.debug.CommandSetTile;\r
 import chemicraft.debug.CompoundHandlerTest;\r
@@ -21,10 +21,11 @@ import chemicraft.item.ItemGasCollectingBottle;
 import chemicraft.system.CommonProxy;\r
 import chemicraft.system.PacketHandler;\r
 import chemicraft.tileentity.TileEntityChemicalCombinationTable;\r
+import chemicraft.tileentity.TileEntityChemicalCraftingTable;\r
 import chemicraft.tileentity.TileEntityDecompositionTable;\r
-import chemicraft.tileentity.TileEntityMaterialCraftingTable;\r
 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;\r
 import chemicraft.util.Auxiliary;\r
+import chemicraft.util.Auxiliary.ArrayAuxiliary;\r
 import chemicraft.util.Auxiliary.NameAuxiliary;\r
 import chemicraft.util.CreativeTabAtoms;\r
 import chemicraft.util.NBTRecipeGrenade;\r
@@ -96,7 +97,7 @@ public class ChemiCraft {
        public int decompositionTableID;\r
        public int chemicalConbinationTableID;\r
        public int toolAndWeaponCraftingTableID;\r
-       public int materialCraftingTableID;\r
+       public int ChemicalCraftingTableID;\r
 \r
        /**\r
         * GUIID\r
@@ -104,7 +105,7 @@ public class ChemiCraft {
        public int guiDecompositionTableID;\r
        public int guiChemicalCombinationTableID;\r
        public int guiToolAndWeaponCraftingTableID;\r
-       public int guiMaterialCraftingTableID;\r
+       public int guiChemicalCraftingTableID;\r
 \r
        /**\r
         * Block型変数\r
@@ -112,7 +113,7 @@ public class ChemiCraft {
        public static Block blockDecompositionTable;\r
        public static Block blockChemicalCombinationTable;\r
        public static Block blockToolAndWeaponCraftingTable;\r
-       public static Block blockMaterialCraftingTable;\r
+       public static Block blockChemicalCraftingTable;\r
 \r
        /**\r
         * Item型変数\r
@@ -132,13 +133,14 @@ public class ChemiCraft {
        public String guiDecompositionTexture = "/chemicraft/guis/Decomposition.png";\r
        public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";\r
        public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";\r
-       public String guiMaterialCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";\r
+       public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";\r
 \r
        /**\r
         * このmodに必要な補助クラスのインスタンス\r
         */\r
-       private Auxiliary Auxiliary = new Auxiliary();\r
-       private NameAuxiliary NameAuxiliary = Auxiliary.new NameAuxiliary();\r
+       public Auxiliary auxiliary = new Auxiliary();\r
+       public NameAuxiliary nameAuxiliary = auxiliary.new NameAuxiliary();\r
+       public ArrayAuxiliary arrayAuxiliary = auxiliary.new ArrayAuxiliary();\r
 \r
        @Mod.PreInit\r
        public void chemiPreLoadMethod(FMLPreInitializationEvent event) {\r
@@ -148,7 +150,7 @@ public class ChemiCraft {
                Property decompositionTableIDProp = cfg.getBlock("DecompositionTable", 2400);\r
                Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);\r
                Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);\r
-               Property materialCraftingTableIDProp = cfg.getBlock("MaterialCraftingTableID", 2403);\r
+               Property ChemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);\r
 \r
                Property atomsIDProp = cfg.getItem("AtomsID", 25000);\r
                Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);\r
@@ -158,13 +160,13 @@ public class ChemiCraft {
                Property guiDecompositionTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1000);\r
                Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);\r
                Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);\r
-               Property guiMaterialCraftingTableIDProp = cfg.get("GUI", "GUIMaterialCraftingTableID", 1003);\r
+               Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);\r
 \r
 \r
                this.decompositionTableID = decompositionTableIDProp.getInt();\r
                this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();\r
                this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();\r
-               this.materialCraftingTableID = materialCraftingTableIDProp.getInt();\r
+               this.ChemicalCraftingTableID = ChemicalCraftingTableIDProp.getInt();\r
                this.atomsID = atomsIDProp.getInt();\r
                this.compoundsID = compoundsIDProp.getInt();\r
                this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();\r
@@ -172,7 +174,7 @@ public class ChemiCraft {
                this.guiDecompositionTableID = guiDecompositionTableIDProp.getInt();\r
                this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();\r
                this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();\r
-               this.guiMaterialCraftingTableID = guiMaterialCraftingTableIDProp.getInt();\r
+               this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();\r
 \r
                cfg.save();\r
 \r
@@ -201,8 +203,8 @@ public class ChemiCraft {
                // Blockを追加します\r
                this.blockDecompositionTable = new BlockDecompositionTable(this.decompositionTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("DecompositionTable");\r
                this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ChemicalCombinationTable");\r
-               this.blockToolAndWeaponCraftingTable = new BlockToolAndMaterialCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ToolAndWeaponCraftingTable");\r
-               this.blockMaterialCraftingTable = new BlockMaterialCraftingTable(materialCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("MaterialCraftingTable");\r
+               this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ToolAndWeaponCraftingTable");\r
+               this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(ChemicalCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ChemicalCraftingTable");\r
 \r
 \r
                // Itemを追加します\r
@@ -215,32 +217,32 @@ public class ChemiCraft {
                GameRegistry.registerBlock(this.blockDecompositionTable);\r
                GameRegistry.registerBlock(this.blockChemicalCombinationTable);\r
                GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable);\r
-               GameRegistry.registerBlock(this.blockMaterialCraftingTable);\r
+               GameRegistry.registerBlock(this.blockChemicalCraftingTable);\r
 \r
                // Blockの名前を設定します\r
-               this.NameAuxiliary.addName(this.blockDecompositionTable, "DecompositionTable");\r
-               this.NameAuxiliary.addName(this.blockDecompositionTable, "ja_JP", "分解台");\r
-               this.NameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");\r
-               this.NameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");\r
-               this.NameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");\r
-               this.NameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");\r
-               this.NameAuxiliary.addName(blockMaterialCraftingTable, "MaterialCraftingTable");\r
-               this.NameAuxiliary.addName(blockMaterialCraftingTable, "ja_JP", "素材製作台");\r
+               this.nameAuxiliary.addName(this.blockDecompositionTable, "DecompositionTable");\r
+               this.nameAuxiliary.addName(this.blockDecompositionTable, "ja_JP", "分解台");\r
+               this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");\r
+               this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");\r
+               this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");\r
+               this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");\r
+               this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");\r
+               this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");\r
 \r
 \r
                // Itemの名前を設定します\r
-               this.NameAuxiliary.addName(this.itemAtoms, atomsName);\r
-               this.NameAuxiliary.addName(this.itemAtoms, "ja_JP", atomsNameJP);\r
-               this.NameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");\r
-               this.NameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");\r
-               this.NameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");\r
-               this.NameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");\r
+               this.nameAuxiliary.addName(this.itemAtoms, atomsName);\r
+               this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", atomsNameJP);\r
+               this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");\r
+               this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");\r
+               this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");\r
+               this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");\r
 \r
                // TileEntityを追加します\r
                GameRegistry.registerTileEntity(TileEntityDecompositionTable.class, "DecompositionTable");\r
                GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");\r
                GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");\r
-               GameRegistry.registerTileEntity(TileEntityMaterialCraftingTable.class, "TileEntityMaterialCraftingTable");\r
+               GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");\r
 \r
                // GUIを追加します\r
                NetworkRegistry.instance().registerGuiHandler(instance, proxy);\r
@@ -273,7 +275,7 @@ public class ChemiCraft {
                        new Character('Z'), new ItemStack(Block.stone),\r
                        new Character('A'), new ItemStack(Item.pickaxeSteel),\r
                });\r
-               GameRegistry.addRecipe(new ItemStack(this.blockMaterialCraftingTable),\r
+               GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),\r
                                new Object[]{\r
                        "XYX", "ZAZ", "ZZZ",\r
                        new Character('X'), new ItemStack(Item.ingotIron),\r
@@ -283,14 +285,14 @@ public class ChemiCraft {
                });\r
 \r
                //手榴弾の追加\r
-               ChemiCraftAPI.instance.addMaterialRecipe(new ItemStack[]{new ItemStack(Item.gunpowder)}, new ItemStack(this.itemAtomGrenade, 16, 0), new NBTRecipeGrenade());\r
+               ChemiCraftAPI.instance.addSharplessMaterialRecipe(new ItemStack[]{new ItemStack(Item.gunpowder)}, new ItemStack(this.itemAtomGrenade, 16, 0), new NBTRecipeGrenade());\r
 \r
        }\r
 \r
        private void apiProcessing(FMLPostInitializationEvent event){\r
                // API用の処理\r
-               this.NameAuxiliary.addName(itemCompounds, ChemiCraftAPI.instance.getCompoundsName().toArray());\r
-               this.NameAuxiliary.addName(itemCompounds, "ja_JP", ChemiCraftAPI.instance.getCompoundsLangName().toArray());\r
+               this.nameAuxiliary.addName(itemCompounds, ChemiCraftAPI.instance.getCompoundsName().toArray());\r
+               this.nameAuxiliary.addName(itemCompounds, "ja_JP", ChemiCraftAPI.instance.getCompoundsLangName().toArray());\r
        }\r
 \r
        public final static int HYDROGEN = 0;\r
index 74f5ffa..4ab1572 100644 (file)
@@ -2,10 +2,12 @@ package chemicraft;
 
 import java.util.ArrayList;
 
+import net.minecraft.src.CraftingManager;
 import net.minecraft.src.ItemStack;
 import chemicraft.system.ChemiCraftCraftingManager;
 import chemicraft.util.ICompoundHandler;
-import chemicraft.util.NBTRecipe;
+import chemicraft.util.MaterialRecipe;
+import chemicraft.util.ChemicalNBTRecipe;
 
 /**
  * ChemiCraftのAPI
@@ -75,33 +77,10 @@ public class ChemiCraftAPI {
        private ArrayList<ItemStack> chemicalCombinationResult = new ArrayList<ItemStack>();
 
 
-
        /**
-        * 素材製作台の効果添付素材のリスト
+        * 素材製作台のレシピクラス
         */
-       private ArrayList<ItemStack[]> materialEffectMaterials = new ArrayList<ItemStack[]>();
-
-
-
-       /**
-        * 素材製作台の素材のリスト
-        */
-       private ArrayList<ItemStack[]> materialMaterials = new ArrayList<ItemStack[]>();
-
-
-
-       /**
-        * 素材製作台の結果のリスト
-        */
-       private ArrayList<ItemStack> materialResult = new ArrayList<ItemStack>();
-
-
-
-       /**
-        * 素材製作台の効果付属用のNBTRecipeのリスト
-        */
-       private ArrayList<NBTRecipe> materialNBT = new ArrayList<NBTRecipe>();
-
+       private ArrayList<MaterialRecipe> materialRecipe = new ArrayList<MaterialRecipe>();
 
 
        /**
@@ -181,14 +160,12 @@ public class ChemiCraftAPI {
 
 
 
-       public void addMaterialRecipe(ItemStack[] materials, ItemStack result, NBTRecipe nbtRecipe){
-               if(materials.length <= 9){
-                       materialMaterials.add(materials);
-                       materialResult.add(result);
-                       materialNBT.add(nbtRecipe);
-               }else{
-                       System.err.println("ChemiCraft内でエラー:addMaterialRecipeの引数materialsの要素数が9を超えています。" + "Material:" + materials + " Result:" + result);
-               }
+       public void addSharplessMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
+               materialRecipe.add(new MaterialRecipe(result, materials, nbtRecipe, true));
+       }
+
+       public void addMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
+               materialRecipe.add(new MaterialRecipe(result, materials, nbtRecipe, false));
        }
        //以下システム関連//////////////////////////////////////////////////////
 
@@ -250,26 +227,10 @@ public class ChemiCraftAPI {
                return chemicalCombinationResult;
        }
 
-
-
-       public ArrayList<ItemStack[]> getMaterialMaterials(){
-               return materialMaterials;
-       }
-
-
-
-       public ArrayList<ItemStack> getMaterialResult(){
-               return materialResult;
-       }
-
-
-
-       public ArrayList<NBTRecipe> getMaterialNBTRecipe(){
-               return materialNBT;
+       public ArrayList<MaterialRecipe> getMaterialRecipe(){
+               return materialRecipe;
        }
 
-
-
        public ChemiCraftCraftingManager getCraftingManager(){
                return chemiCraftCraftingManager;
        }
@@ -6,11 +6,11 @@ import net.minecraft.src.Material;
 import net.minecraft.src.TileEntity;
 import net.minecraft.src.World;
 import chemicraft.ChemiCraft;
-import chemicraft.tileentity.TileEntityMaterialCraftingTable;
+import chemicraft.tileentity.TileEntityChemicalCraftingTable;
 
-public class BlockMaterialCraftingTable extends BlockContainer {
+public class BlockChemicalCraftingTable extends BlockContainer {
 
-       public BlockMaterialCraftingTable(int par1, int par2, Material par3Material) {
+       public BlockChemicalCraftingTable(int par1, int par2, Material par3Material) {
                super(par1, par2, par3Material);
                this.setCreativeTab(ChemiCraft.instance.creativeTab);
        }
@@ -18,7 +18,7 @@ public class BlockMaterialCraftingTable extends BlockContainer {
 
        @Override
        public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9){
-               par5EntityPlayer.openGui(ChemiCraft.instance, ChemiCraft.instance.guiMaterialCraftingTableID, par1World, par2, par3, par4);
+               par5EntityPlayer.openGui(ChemiCraft.instance, ChemiCraft.instance.guiChemicalCraftingTableID, par1World, par2, par3, par4);
                return true;
        }
 
@@ -47,7 +47,7 @@ public class BlockMaterialCraftingTable extends BlockContainer {
 
        @Override
        public TileEntity createNewTileEntity(World var1) {
-               return new TileEntityMaterialCraftingTable();
+               return new TileEntityChemicalCraftingTable();
        }
 
 }
@@ -8,9 +8,9 @@ import net.minecraft.src.World;
 import chemicraft.ChemiCraft;
 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
 
-public class BlockToolAndMaterialCraftingTable extends BlockContainer {
+public class BlockToolAndWeaponCraftingTable extends BlockContainer {
 
-       public BlockToolAndMaterialCraftingTable(int par1, int par2, Material par3Material) {
+       public BlockToolAndWeaponCraftingTable(int par1, int par2, Material par3Material) {
                super(par1, par2, par3Material);
                this.setCreativeTab(ChemiCraft.instance.creativeTab);
        }
diff --git a/common/chemicraft/container/ContainerChemicalCraftingTable.java b/common/chemicraft/container/ContainerChemicalCraftingTable.java
new file mode 100644 (file)
index 0000000..7ceb4e4
--- /dev/null
@@ -0,0 +1,119 @@
+package chemicraft.container;
+
+import net.minecraft.src.Container;
+import net.minecraft.src.EntityPlayer;
+import net.minecraft.src.IInventory;
+import net.minecraft.src.ItemStack;
+import net.minecraft.src.Slot;
+import net.minecraft.src.World;
+import chemicraft.ChemiCraft;
+import chemicraft.ChemiCraftAPI;
+import chemicraft.inventory.InventoryChemicalCraftingMaterial;
+import chemicraft.inventory.InventoryChemicalCraftingNBT;
+import chemicraft.inventory.InventoryChemicalCraftingResult;
+import chemicraft.slot.SlotChemicalCraftingResult;
+import chemicraft.tileentity.TileEntityChemicalCraftingTable;
+
+public class ContainerChemicalCraftingTable extends Container {
+
+       /**
+        * Worldのインスタンス
+        */
+       private World worldObj;
+
+
+       /**
+        * BlockのX, Y, Z座標
+        */
+       private int posX;
+       private int posY;
+       private int posZ;
+
+
+       /**
+        * the TileEntity.
+        */
+       private TileEntityChemicalCraftingTable tileEntity;
+
+
+       private InventoryChemicalCraftingMaterial invm;
+       private InventoryChemicalCraftingResult invr;
+       private InventoryChemicalCraftingNBT invn;
+
+
+
+       public ContainerChemicalCraftingTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCraftingTable par2)
+       {
+               super();
+               this.worldObj = par2.worldObj;
+               this.posX = par2.xCoord;
+               this.posY = par2.yCoord;
+               this.posZ = par2.zCoord;
+               this.tileEntity = par2;
+               this.invm = (InventoryChemicalCraftingMaterial) this.tileEntity.chemicalCraftingInvMaterial;
+               this.invr = (InventoryChemicalCraftingResult) this.tileEntity.chemicalCraftingInvResult;
+               this.invn = (InventoryChemicalCraftingNBT) this.tileEntity.chemicalCraftingInvNBT;
+               //GenerateInventory
+               this.generateSlots(this.invm, this.invr, this.invn);
+               //GeneratePlayerInventory
+               int var3;
+
+               for (var3 = 0; var3 < 3; ++var3)
+               {
+                       for (int var4 = 0; var4 < 9; ++var4)
+                       {
+                               this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 85 + var3 * 18));
+                       }
+               }
+
+               for (var3 = 0; var3 < 9; ++var3)
+               {
+                       this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
+               }
+
+               this.invm.setEventHandler(this);
+               this.invr.setEventHandler(this);
+               this.invn.setEventHandler(this);
+
+       }
+
+
+
+       @Override
+       public void onCraftMatrixChanged(IInventory par1IInventory){
+               ChemiCraftAPI.instance.getCraftingManager().chemicalCrafting(this.invm, this.invr, this.invn);
+       }
+
+       @Override
+       public void onCraftGuiClosed(EntityPlayer par1EntityPlayer){
+               super.onCraftGuiClosed(par1EntityPlayer);
+       }
+
+
+
+       @Override
+       public boolean canInteractWith(EntityPlayer par1EntityPlayer){
+               return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.ChemicalCraftingTableID ? false : par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
+       }
+
+
+
+       @Override
+       public ItemStack transferStackInSlot(int par1){
+               return null;
+       }
+
+
+
+       private void generateSlots(IInventory materialInv, IInventory resultInv, IInventory nbtInv){
+               for(int i = 0;i < 3;i++){
+                       this.addSlotToContainer(new Slot(invn, i, 30 + 18 * i, 7));
+               }
+               for(int i = 0;i < 3;i++){
+                       for(int j = 0;j < 3;j++){
+                               this.addSlotToContainer(new Slot(invm, i * 3 + j, 30 + 18 * j, 27 + 18 * i));
+                       }
+               }
+               this.addSlotToContainer(new SlotChemicalCraftingResult(invr, 0, 123, 33));
+       }
+}
diff --git a/common/chemicraft/container/ContainerMaterialCraftingTable.java b/common/chemicraft/container/ContainerMaterialCraftingTable.java
deleted file mode 100644 (file)
index 7b2897d..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-package chemicraft.container;
-
-import net.minecraft.src.Container;
-import net.minecraft.src.EntityPlayer;
-import net.minecraft.src.IInventory;
-import net.minecraft.src.ItemStack;
-import net.minecraft.src.Slot;
-import net.minecraft.src.World;
-import chemicraft.ChemiCraft;
-import chemicraft.ChemiCraftAPI;
-import chemicraft.inventory.InventoryMaterialCrafting;
-import chemicraft.slot.SlotMaterialCraftingResult;
-import chemicraft.tileentity.TileEntityMaterialCraftingTable;
-
-public class ContainerMaterialCraftingTable extends Container {
-
-       /**
-        * Worldのインスタンス
-        */
-       private World worldObj;
-
-
-       /**
-        * BlockのX, Y, Z座標
-        */
-       private int posX;
-       private int posY;
-       private int posZ;
-
-
-       /**
-        * the TileEntity.
-        */
-       private TileEntityMaterialCraftingTable tileEntity;
-
-
-       private InventoryMaterialCrafting inv;
-
-
-
-       public ContainerMaterialCraftingTable(EntityPlayer par1EntityPlayer, TileEntityMaterialCraftingTable par2)
-       {
-               super();
-               this.worldObj = par2.worldObj;
-               this.posX = par2.xCoord;
-               this.posY = par2.yCoord;
-               this.posZ = par2.zCoord;
-               this.tileEntity = par2;
-               this.inv = (InventoryMaterialCrafting) par2.getInventorys();
-               //GenerateInventory
-               this.generateSlots("Decomposition", par2.getInventorys());
-               //GeneratePlayerInventory
-               int var3;
-
-               for (var3 = 0; var3 < 3; ++var3)
-               {
-                       for (int var4 = 0; var4 < 9; ++var4)
-                       {
-                               this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 85 + var3 * 18));
-                       }
-               }
-
-               for (var3 = 0; var3 < 9; ++var3)
-               {
-                       this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
-               }
-
-               ((InventoryMaterialCrafting) par2.getInventorys()).setEventHandler(this);
-
-       }
-
-
-
-       @Override
-       public void onCraftMatrixChanged(IInventory par1IInventory){
-               par1IInventory.setInventorySlotContents(12, ChemiCraftAPI.instance.getCraftingManager().getMaterialResult(par1IInventory));
-               ((InventoryMaterialCrafting) par1IInventory).setFlag(true);
-       }
-
-
-
-       @Override
-       public ItemStack slotClick(int par1, int par2, boolean par3, EntityPlayer par4EntityPlayer)
-       {
-               super.slotClick(par1, par2, par3, par4EntityPlayer);
-               if(par1 == 12){
-                       ((InventoryMaterialCrafting) this.tileEntity.getInventorys()).setFlag2(true);
-                       this.onCraftMatrixChanged(this.inv);
-                       for(int i = 0;i < 9;i++){
-                               if(this.inv.getStackInSlot(i+3) != null){
-                                       if(this.inv.getStackInSlot(i+3).stackSize > 1){
-                                               this.putStackInSlot(i+3, new ItemStack(this.inv.getStackInSlot(i+3).itemID, --this.inv.getStackInSlot(i+3).stackSize, this.inv.getStackInSlot(i+3).getItemDamage()));
-                                       }else{
-                                               this.putStackInSlot(i+3, null);
-                                       }
-                               }
-                       }
-               }
-               return null;
-       }
-
-
-
-       @Override
-       public void onCraftGuiClosed(EntityPlayer par1EntityPlayer){
-               super.onCraftGuiClosed(par1EntityPlayer);
-       }
-
-
-
-       @Override
-       public boolean canInteractWith(EntityPlayer par1EntityPlayer){
-               return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.materialCraftingTableID ? false : par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
-       }
-
-
-
-       @Override
-       public ItemStack transferStackInSlot(int par1){
-               return null;
-       }
-
-
-
-       private void generateSlots(String activeTabs, IInventory inventorys){
-               int count = 0;
-               for(int i = 0;i < 3;i++){
-                       this.addSlotToContainer(new Slot(inventorys, count, 30 + 18 * i, 7));
-                       count++;
-               }
-               for(int i = 0;i < 3;i++){
-                       for(int j = 0;j < 3;j++){
-                               this.addSlotToContainer(new Slot(inventorys, count, 30 + 18 * j, 27 + 18 * i));
-                               count++;
-                       }
-               }
-               this.addSlotToContainer(new SlotMaterialCraftingResult(inventorys, count, 123, 33));
-       }
-
-}
@@ -4,18 +4,18 @@ import net.minecraft.src.EntityPlayer;
 import net.minecraft.src.GuiContainer;
 import net.minecraft.src.InventoryPlayer;
 import chemicraft.ChemiCraft;
-import chemicraft.container.ContainerMaterialCraftingTable;
-import chemicraft.tileentity.TileEntityMaterialCraftingTable;
+import chemicraft.container.ContainerChemicalCraftingTable;
+import chemicraft.tileentity.TileEntityChemicalCraftingTable;
 import cpw.mods.fml.common.Side;
 import cpw.mods.fml.common.asm.SideOnly;
 
 @SideOnly(Side.CLIENT)
-public class GuiMaterialCraftingTable extends GuiContainer {
+public class GuiChemicalCraftingTable extends GuiContainer {
 
        /**
         * the TileEntity.
         */
-       private TileEntityMaterialCraftingTable tileEntity;
+       private TileEntityChemicalCraftingTable tileEntity;
 
 
        /**
@@ -27,22 +27,22 @@ public class GuiMaterialCraftingTable extends GuiContainer {
        /**
         * the Container
         */
-       private ContainerMaterialCraftingTable container;
+       private ContainerChemicalCraftingTable container;
 
 
 
-       public GuiMaterialCraftingTable(EntityPlayer par1EntityPlayer, TileEntityMaterialCraftingTable par2){
-               super(new ContainerMaterialCraftingTable(par1EntityPlayer, par2));
+       public GuiChemicalCraftingTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCraftingTable par2){
+               super(new ContainerChemicalCraftingTable(par1EntityPlayer, par2));
                this.inventoryPlayer = par1EntityPlayer.inventory;
                this.tileEntity = par2;
-               this.container = (ContainerMaterialCraftingTable) this.inventorySlots;
+               this.container = (ContainerChemicalCraftingTable) this.inventorySlots;
        }
 
 
 
        @Override
        protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3){
-               this.mc.renderEngine.bindTexture(this.mc.renderEngine.getTexture(ChemiCraft.instance.guiMaterialCraftingTexture));
+               this.mc.renderEngine.bindTexture(this.mc.renderEngine.getTexture(ChemiCraft.instance.guiChemicalCraftingTexture));
                this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
        }
 
diff --git a/common/chemicraft/inventory/InventoryChemicalCraftingMaterial.java b/common/chemicraft/inventory/InventoryChemicalCraftingMaterial.java
new file mode 100644 (file)
index 0000000..a976f85
--- /dev/null
@@ -0,0 +1,93 @@
+package chemicraft.inventory;
+
+import net.minecraft.src.Container;
+import net.minecraft.src.EntityPlayer;
+import net.minecraft.src.IInventory;
+import net.minecraft.src.ItemStack;
+
+public class InventoryChemicalCraftingMaterial implements IInventory {
+
+       private ItemStack[] inventory = new ItemStack[9];
+
+       private Container eventHandelr;
+
+       public void setEventHandler(Container par1Container){
+               this.eventHandelr = par1Container;
+       }
+
+       @Override
+       public int getSizeInventory() {
+               return inventory.length;
+       }
+
+       @Override
+       public ItemStack getStackInSlot(int var1) {
+               return inventory[var1];
+       }
+
+       @Override
+       public ItemStack decrStackSize(int par1, int par2)
+       {
+               if (this.inventory[par1] != null)
+               {
+                       ItemStack var3 = this.inventory[par1];
+                       this.inventory[par1] = null;
+                       return var3;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       @Override
+       public ItemStack getStackInSlotOnClosing(int par1)
+       {
+               if (this.inventory[par1] != null)
+               {
+                       ItemStack var2 = this.inventory[par1];
+                       this.inventory[par1] = null;
+                       return var2;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       @Override
+       public void setInventorySlotContents(int var1, ItemStack var2) {
+               inventory[var1] = var2;
+       }
+
+       @Override
+       public String getInvName() {
+               return "ChemicalCraftingInventory";
+       }
+
+       @Override
+       public int getInventoryStackLimit() {
+               return 64;
+       }
+
+       @Override
+       public void onInventoryChanged() {
+               this.eventHandelr.onCraftMatrixChanged(this);
+       }
+
+       @Override
+       public boolean isUseableByPlayer(EntityPlayer var1) {
+               return true;
+       }
+
+       @Override
+       public void openChest() {
+
+       }
+
+       @Override
+       public void closeChest() {
+
+       }
+
+}
diff --git a/common/chemicraft/inventory/InventoryChemicalCraftingNBT.java b/common/chemicraft/inventory/InventoryChemicalCraftingNBT.java
new file mode 100644 (file)
index 0000000..b390bc1
--- /dev/null
@@ -0,0 +1,92 @@
+package chemicraft.inventory;
+
+import net.minecraft.src.Container;
+import net.minecraft.src.EntityPlayer;
+import net.minecraft.src.IInventory;
+import net.minecraft.src.ItemStack;
+
+public class InventoryChemicalCraftingNBT implements IInventory {
+
+       private ItemStack[] inventory = new ItemStack[3];
+
+       private Container eventHandelr;
+
+       public void setEventHandler(Container par1Container){
+               this.eventHandelr = par1Container;
+       }
+
+       @Override
+       public int getSizeInventory() {
+               return inventory.length;
+       }
+
+       @Override
+       public ItemStack getStackInSlot(int var1) {
+               return inventory[var1];
+       }
+
+       @Override
+       public ItemStack decrStackSize(int par1, int par2)
+       {
+               if (this.inventory[par1] != null)
+               {
+                       ItemStack var3 = this.inventory[par1];
+                       this.inventory[par1] = null;
+                       return var3;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       @Override
+       public ItemStack getStackInSlotOnClosing(int par1)
+       {
+               if (this.inventory[par1] != null)
+               {
+                       ItemStack var2 = this.inventory[par1];
+                       this.inventory[par1] = null;
+                       return var2;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       @Override
+       public void setInventorySlotContents(int var1, ItemStack var2) {
+               inventory[var1] = var2;
+       }
+
+       @Override
+       public String getInvName() {
+               return "ChemicalCraftingInventory";
+       }
+
+       @Override
+       public int getInventoryStackLimit() {
+               return 64;
+       }
+
+       @Override
+       public void onInventoryChanged() {
+       }
+
+       @Override
+       public boolean isUseableByPlayer(EntityPlayer var1) {
+               return true;
+       }
+
+       @Override
+       public void openChest() {
+
+       }
+
+       @Override
+       public void closeChest() {
+
+       }
+
+}
@@ -5,27 +5,14 @@ import net.minecraft.src.EntityPlayer;
 import net.minecraft.src.IInventory;
 import net.minecraft.src.ItemStack;
 
-public class InventoryMaterialCrafting implements IInventory {
+public class InventoryChemicalCraftingResult implements IInventory {
 
-       private ItemStack[] inventory = new ItemStack[3+9+1];
-
-       private boolean flag;
-
-       private boolean flag2;
+       private ItemStack[] inventory = new ItemStack[1];
 
        private Container eventHandelr;
 
        public void setEventHandler(Container par1Container){
                this.eventHandelr = par1Container;
-               this.flag = true;
-       }
-
-       public void setFlag(boolean par1){
-               this.flag = par1;
-       }
-
-       public void setFlag2(boolean par1){
-               this.flag2 = par1;
        }
 
        @Override
@@ -75,7 +62,7 @@ public class InventoryMaterialCrafting implements IInventory {
 
        @Override
        public String getInvName() {
-               return "MaterialCraftingInventory";
+               return "ChemicalCraftingInventory";
        }
 
        @Override
@@ -85,23 +72,6 @@ public class InventoryMaterialCrafting implements IInventory {
 
        @Override
        public void onInventoryChanged() {
-               if(flag){
-                       this.eventHandelr.onCraftMatrixChanged(this);
-               }
-       }
-
-       public void subtractStack(int par1, int par2, ItemStack[] par3ItemStack){
-               if(flag2){
-                       for(int i = par1;i < par1+par2;i++){
-                               if(par3ItemStack[i] != null){
-                                       if(par3ItemStack[i].stackSize > 1){
-                                               this.setInventorySlotContents(i, new ItemStack(par3ItemStack[i].itemID, --par3ItemStack[i].stackSize, par3ItemStack[i].getItemDamage()));
-                                       }else{
-                                               this.setInventorySlotContents(i, null);
-                                       }
-                               }
-                       }
-               }
        }
 
        @Override
@@ -119,4 +89,5 @@ public class InventoryMaterialCrafting implements IInventory {
 
        }
 
+
 }
@@ -4,9 +4,9 @@ import net.minecraft.src.IInventory;
 import net.minecraft.src.ItemStack;
 import net.minecraft.src.Slot;
 
-public class SlotMaterialCraftingResult extends Slot {
+public class SlotChemicalCraftingResult extends Slot {
 
-       public SlotMaterialCraftingResult(IInventory par1iInventory, int par2, int par3, int par4) {
+       public SlotChemicalCraftingResult(IInventory par1iInventory, int par2, int par3, int par4) {
                super(par1iInventory, par2, par3, par4);
        }
 
index 5c33892..d8cf124 100644 (file)
@@ -7,8 +7,10 @@ import net.minecraft.src.IInventory;
 import net.minecraft.src.ItemStack;
 import chemicraft.ChemiCraftAPI;
 import chemicraft.inventory.InventoryChemicalCombination;
+import chemicraft.inventory.InventoryChemicalCraftingMaterial;
+import chemicraft.inventory.InventoryChemicalCraftingNBT;
+import chemicraft.inventory.InventoryChemicalCraftingResult;
 import chemicraft.inventory.InventoryDecomposition;
-import chemicraft.inventory.InventoryMaterialCrafting;
 
 public class ChemiCraftCraftingManager {
 
@@ -133,83 +135,38 @@ public class ChemiCraftCraftingManager {
 
 
 
-       public ItemStack getMaterialResult(IInventory par1IInventory){
-               ((InventoryMaterialCrafting) par1IInventory).setFlag(false);
-
-               ItemStack result = null;
-
-               for(int i = 0;i < ChemiCraftAPI.instance.getMaterialMaterials().size();i++){
-                       boolean match = true;
-
-                       ArrayList<Integer> materialID = new ArrayList<Integer>();
-                       ArrayList<Integer> materialDamage = new ArrayList<Integer>();
-                       ArrayList<Integer> recipeID = new ArrayList<Integer>();
-                       ArrayList<Integer> recipeDamage = new ArrayList<Integer>();
-                       ItemStack[] var1 = new ItemStack[3];
-
-                       //Just loop of recipe size of recipe index i.
-                       for(int j = 0;j < ChemiCraftAPI.instance.getMaterialMaterials().get(i).length;j++){
-                               //Adding the recipe ID & Damage.
-                               recipeID.add(ChemiCraftAPI.instance.getMaterialMaterials().get(i)[j].itemID);
-                               recipeDamage.add(ChemiCraftAPI.instance.getMaterialMaterials().get(i)[j].getItemDamage());
+       public void chemicalCrafting(InventoryChemicalCraftingMaterial par1IInventory, InventoryChemicalCraftingResult par2IInventory, InventoryChemicalCraftingNBT par3IInventory){
+               ChemiCraftAPI api = ChemiCraftAPI.instance;
+               int[] materialID = new int[par1IInventory.getSizeInventory()];
+               int[] materialDamage = new int[par1IInventory.getSizeInventory()];
+               int[] resultID = new int[par2IInventory.getSizeInventory()];
+               int[] resultDamage = new int[par2IInventory.getSizeInventory()];
+               int[] nbtID = new int[par3IInventory.getSizeInventory()];
+               int[] nbtDamage = new int[par3IInventory.getSizeInventory()];
+               //ItemID,ItemDamageの格納
+               for(int j = 0;j < par1IInventory.getSizeInventory();j++){
+                       if(par1IInventory.getStackInSlot(j) != null){
+                               materialID[j] = par1IInventory.getStackInSlot(j).itemID;
+                               materialDamage[j] = par1IInventory.getStackInSlot(j).getItemDamage();
                        }
-                       //Just loop of 9.
-                       for(int j = 0;j < 9;j++){
-                               //Null check
-                               if(par1IInventory.getStackInSlot(j+3) != null){
-                                       //Adding the materialID & Damage.
-                                       materialID.add(par1IInventory.getStackInSlot(j+3).itemID);
-                                       materialDamage.add(par1IInventory.getStackInSlot(j+3).getItemDamage());
-                               }
-                       }
-
-                       for(int j = 0;j < 3;j++){
-                               var1[j] = par1IInventory.getStackInSlot(j);
-                       }
-
-                       //trimToSize & sorting.
-                       materialID.trimToSize();
-                       materialDamage.trimToSize();
-                       recipeID.trimToSize();
-                       recipeDamage.trimToSize();
-                       Collections.sort(materialID);
-                       Collections.sort(materialDamage);
-                       Collections.sort(recipeID);
-                       Collections.sort(recipeDamage);
-
-                       //Size check.
-                       if(materialID.size() != recipeID.size()){ match = false;}
-                       //Just loop of materialID.size().
-                       for(int j = 0;j < materialID.size();j++){
-                               //ID check.
-                               if(materialID.get(j) != recipeID.get(j)){ match = false;}
-                               //Damage check.
-                               if(materialDamage.get(j) != recipeDamage.get(j)){ match = false;}
+               }
+               for(int j = 0;j < par2IInventory.getSizeInventory();j++){
+                       if(par2IInventory.getStackInSlot(j) != null){
+                               resultID[j] = par2IInventory.getStackInSlot(j).itemID;
+                               resultDamage[j] = par2IInventory.getStackInSlot(j).getItemDamage();
                        }
-
-                       //if "match == true"
-                       if(match){
-                               //Assignment to the result.
-                               result =
-                                               new ItemStack(
-                                                               ChemiCraftAPI.instance.getMaterialResult().get(i).itemID,
-                                                               ChemiCraftAPI.instance.getMaterialResult().get(i).stackSize,
-                                                               ChemiCraftAPI.instance.getMaterialResult().get(i).getItemDamage()
-                                                               );
-
-                               if(ChemiCraftAPI.instance.getMaterialNBTRecipe().get(i) != null){
-                                       ItemStack[] useItems = ChemiCraftAPI.instance.getMaterialNBTRecipe().get(i).setNBT(var1, result);
-                                       ((InventoryMaterialCrafting) par1IInventory).subtractStack(0, 3, useItems);
-                               }
-
-                               ((InventoryMaterialCrafting) par1IInventory).setFlag2(false);
-
-                               //return the result.
-                               return result;
+               }
+               for(int j = 0;j < par3IInventory.getSizeInventory();j++){
+                       if(par3IInventory.getStackInSlot(j) != null){
+                               nbtID[j] = par3IInventory.getStackInSlot(j).itemID;
+                               nbtDamage[j] = par3IInventory.getStackInSlot(j).getItemDamage();
                        }
                }
 
-               return null;
+               for(int i = 0;i < api.getMaterialRecipe().size();i++){
+                       api.getMaterialRecipe().get(i).match(par1IInventory);
+               }
+               return;
        }
 
 
index a946870..76a792c 100644 (file)
@@ -5,11 +5,11 @@ import net.minecraft.src.TileEntity;
 import net.minecraft.src.World;
 import chemicraft.container.ContainerChemicalCombinationTable;
 import chemicraft.container.ContainerDecompositionTable;
-import chemicraft.container.ContainerMaterialCraftingTable;
+import chemicraft.container.ContainerChemicalCraftingTable;
 import chemicraft.container.ContainerToolAndWeaponCraftingTable;
 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
 import chemicraft.tileentity.TileEntityDecompositionTable;
-import chemicraft.tileentity.TileEntityMaterialCraftingTable;
+import chemicraft.tileentity.TileEntityChemicalCraftingTable;
 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
 import cpw.mods.fml.common.network.IGuiHandler;
 
@@ -35,8 +35,8 @@ public class CommonProxy implements IGuiHandler {
                        return new ContainerChemicalCombinationTable(player, (TileEntityChemicalCombinationTable) tileEntity);
                }else if(tileEntity instanceof TileEntityToolAndWeaponCraftingTable){
                        return new ContainerToolAndWeaponCraftingTable(player, (TileEntityToolAndWeaponCraftingTable) tileEntity);
-               }else if(tileEntity instanceof TileEntityMaterialCraftingTable){
-                       return new ContainerMaterialCraftingTable(player, (TileEntityMaterialCraftingTable) tileEntity);
+               }else if(tileEntity instanceof TileEntityChemicalCraftingTable){
+                       return new ContainerChemicalCraftingTable(player, (TileEntityChemicalCraftingTable) tileEntity);
                }
                return null;
        }
index eac3547..608b1bc 100644 (file)
@@ -13,7 +13,7 @@ import net.minecraft.src.World;
 import chemicraft.ChemiCraft;\r
 import chemicraft.tileentity.TileEntityChemicalCombinationTable;\r
 import chemicraft.tileentity.TileEntityDecompositionTable;\r
-import chemicraft.tileentity.TileEntityMaterialCraftingTable;\r
+import chemicraft.tileentity.TileEntityChemicalCraftingTable;\r
 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;\r
 \r
 import com.google.common.io.ByteArrayDataInput;\r
@@ -172,7 +172,7 @@ public class PacketHandler implements IPacketHandler {
                return packet;\r
        }\r
 \r
-       public static Packet getPacket(TileEntityMaterialCraftingTable tileEntity) {\r
+       public static Packet getPacket(TileEntityChemicalCraftingTable tileEntity) {\r
                ByteArrayOutputStream var1 = new ByteArrayOutputStream(128);\r
                DataOutputStream var2 = new DataOutputStream(var1);\r
 \r
diff --git a/common/chemicraft/tileentity/TileEntityChemicalCraftingTable.java b/common/chemicraft/tileentity/TileEntityChemicalCraftingTable.java
new file mode 100644 (file)
index 0000000..983205e
--- /dev/null
@@ -0,0 +1,143 @@
+package chemicraft.tileentity;
+
+import java.io.DataOutputStream;
+
+import net.minecraft.src.IInventory;
+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 chemicraft.inventory.InventoryChemicalCraftingMaterial;
+import chemicraft.inventory.InventoryChemicalCraftingNBT;
+import chemicraft.inventory.InventoryChemicalCraftingResult;
+import chemicraft.system.PacketHandler;
+
+import com.google.common.io.ByteArrayDataInput;
+
+public class TileEntityChemicalCraftingTable extends TileEntity {
+
+       public IInventory chemicalCraftingInvMaterial = new InventoryChemicalCraftingMaterial();
+       public IInventory chemicalCraftingInvResult = new InventoryChemicalCraftingResult();
+       public IInventory chemicalCraftingInvNBT = new InventoryChemicalCraftingNBT();
+
+
+       public TileEntityChemicalCraftingTable() {
+               super();
+       }
+
+       @Override
+       public void updateEntity() {
+               super.updateEntity();
+       }
+
+
+       @Override
+       public void readFromNBT(NBTTagCompound par1) {
+               super.readFromNBT(par1);
+
+               NBTTagList var2 = par1.getTagList("Items");
+               for (int var3 = 0; var3 < var2.tagCount(); ++var3)
+               {
+                       NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
+                       int var5 = var4.getByte("Slot") & 255;
+
+                       if (var5 >= 0 && var5 < this.chemicalCraftingInvMaterial.getSizeInventory())
+                       {
+                               this.chemicalCraftingInvMaterial.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
+                       }
+               }
+
+               NBTTagList var6 = par1.getTagList("Items2");
+               for (int var7 = 0; var7 < var6.tagCount(); ++var7)
+               {
+                       NBTTagCompound var4 = (NBTTagCompound)var6.tagAt(var7);
+                       int var5 = var4.getByte("Slot2") & 255;
+
+                       if (var5 >= 0 && var5 < this.chemicalCraftingInvMaterial.getSizeInventory())
+                       {
+                               this.chemicalCraftingInvMaterial.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
+                       }
+               }
+
+               NBTTagList var8 = par1.getTagList("Items3");
+               for (int var9 = 0; var9 < var8.tagCount(); ++var9)
+               {
+                       NBTTagCompound var11 = (NBTTagCompound)var8.tagAt(var9);
+                       int var10 = var11.getByte("Slot3") & 255;
+
+                       if (var10 >= 0 && var10 < this.chemicalCraftingInvNBT.getSizeInventory())
+                       {
+                               this.chemicalCraftingInvNBT.setInventorySlotContents(var10, ItemStack.loadItemStackFromNBT(var11));
+                       }
+               }
+       }
+
+
+       @Override
+       public void writeToNBT(NBTTagCompound par1) {
+               super.writeToNBT(par1);
+
+               NBTTagList var2 = new NBTTagList();
+               for (int var3 = 0; var3 < this.chemicalCraftingInvMaterial.getSizeInventory(); ++var3)
+               {
+                       if (this.chemicalCraftingInvMaterial.getStackInSlot(var3) != null)
+                       {
+                               NBTTagCompound var4 = new NBTTagCompound();
+                               var4.setByte("Slot", (byte)var3);
+                               this.chemicalCraftingInvMaterial.getStackInSlot(var3).writeToNBT(var4);
+                               var2.appendTag(var4);
+                       }
+               }
+               par1.setTag("Items", var2);
+
+               NBTTagList var5 = new NBTTagList();
+               for (int var6 = 0; var6 < this.chemicalCraftingInvResult.getSizeInventory(); ++var6)
+               {
+                       if (this.chemicalCraftingInvResult.getStackInSlot(var6) != null)
+                       {
+                               NBTTagCompound var7 = new NBTTagCompound();
+                               var7.setByte("Slot2", (byte)var6);
+                               this.chemicalCraftingInvResult.getStackInSlot(var6).writeToNBT(var7);
+                               var5.appendTag(var7);
+                       }
+               }
+               par1.setTag("Items2", var5);
+
+               NBTTagList var8 = new NBTTagList();
+               for (int var9 = 0; var9 < this.chemicalCraftingInvNBT.getSizeInventory(); ++var9)
+               {
+                       if (this.chemicalCraftingInvNBT.getStackInSlot(var9) != null)
+                       {
+                               NBTTagCompound var10 = new NBTTagCompound();
+                               var10.setByte("Slot3", (byte)var9);
+                               this.chemicalCraftingInvNBT.getStackInSlot(var9).writeToNBT(var10);
+                               var8.appendTag(var10);
+                       }
+               }
+               par1.setTag("Items3", var8);
+       }
+
+
+       @Override
+       public Packet getDescriptionPacket() {
+               return PacketHandler.getPacket(this);
+       }
+
+
+       public void readPacket(ByteArrayDataInput data) {
+               try {
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+       }
+
+
+       public void writePacket(DataOutputStream dos){
+               try {
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+       }
+
+}
diff --git a/common/chemicraft/tileentity/TileEntityMaterialCraftingTable.java b/common/chemicraft/tileentity/TileEntityMaterialCraftingTable.java
deleted file mode 100644 (file)
index 58385cf..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-package chemicraft.tileentity;
-
-import java.io.DataOutputStream;
-
-import net.minecraft.src.IInventory;
-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 chemicraft.inventory.InventoryMaterialCrafting;
-import chemicraft.system.PacketHandler;
-
-import com.google.common.io.ByteArrayDataInput;
-
-public class TileEntityMaterialCraftingTable extends TileEntity {
-
-       /**
-        * DecompositionのInventory
-        */
-       public IInventory materialCraftingInv = new InventoryMaterialCrafting();
-
-
-       public TileEntityMaterialCraftingTable() {
-               super();
-       }
-
-       @Override
-       public void updateEntity() {
-               super.updateEntity();
-       }
-
-
-       @Override
-       public void readFromNBT(NBTTagCompound par1) {
-               super.readFromNBT(par1);
-
-               NBTTagList var2 = par1.getTagList("Items");
-               for (int var3 = 0; var3 < var2.tagCount(); ++var3)
-               {
-                       NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
-                       int var5 = var4.getByte("Slot") & 255;
-
-                       if (var5 >= 0 && var5 < this.materialCraftingInv.getSizeInventory())
-                       {
-                               this.materialCraftingInv.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
-                       }
-               }
-       }
-
-
-       @Override
-       public void writeToNBT(NBTTagCompound par1) {
-               super.writeToNBT(par1);
-
-               NBTTagList var2 = new NBTTagList();
-               for (int var3 = 0; var3 < this.materialCraftingInv.getSizeInventory(); ++var3)
-               {
-                       if (this.materialCraftingInv.getStackInSlot(var3) != null)
-                       {
-                               NBTTagCompound var4 = new NBTTagCompound();
-                               var4.setByte("Slot", (byte)var3);
-                               this.materialCraftingInv.getStackInSlot(var3).writeToNBT(var4);
-                               var2.appendTag(var4);
-                       }
-               }
-               par1.setTag("Items", var2);
-       }
-
-
-       public IInventory getInventorys(){
-               return (InventoryMaterialCrafting) this.materialCraftingInv;
-       }
-
-
-       @Override
-       public Packet getDescriptionPacket() {
-               return PacketHandler.getPacket(this);
-       }
-
-
-       public void readPacket(ByteArrayDataInput data) {
-               try {
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
-       }
-
-
-       public void writePacket(DataOutputStream dos){
-               try {
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
-       }
-
-}
index b6e32bc..8ae33f9 100644 (file)
@@ -165,4 +165,27 @@ public class Auxiliary {
 \r
        }\r
 \r
+       public class ArrayAuxiliary{\r
+\r
+               public ItemStack[] deleteNull(ItemStack[] array){\r
+                       int count = 0;\r
+                       ItemStack[] arrayCopy;\r
+                       for(int i = 0;i < array.length;i++){\r
+                               if(array[array.length - 1 - i] == null){\r
+                                       count++;\r
+                               }else{\r
+                                       break;\r
+                               }\r
+                       }\r
+                       arrayCopy = new ItemStack[array.length - count];\r
+                       for(int i = 0;i < arrayCopy.length;i++){\r
+                               arrayCopy[i] = array[i];\r
+                       }\r
+                       array = null;\r
+                       array = arrayCopy.clone();\r
+                       return array;\r
+               }\r
+\r
+       }\r
+\r
 }\r
diff --git a/common/chemicraft/util/ChemicalNBTRecipe.java b/common/chemicraft/util/ChemicalNBTRecipe.java
new file mode 100644 (file)
index 0000000..914d194
--- /dev/null
@@ -0,0 +1,11 @@
+package chemicraft.util;
+
+import net.minecraft.src.ItemStack;
+
+public abstract class ChemicalNBTRecipe {
+
+       public abstract void setNBT(ItemStack[] materials, ItemStack result);
+
+       public abstract ItemStack[] getMatchItems(ItemStack[] materials);
+
+}
diff --git a/common/chemicraft/util/ComparaterItemStackID.java b/common/chemicraft/util/ComparaterItemStackID.java
new file mode 100644 (file)
index 0000000..63df52c
--- /dev/null
@@ -0,0 +1,17 @@
+package chemicraft.util;
+
+import java.util.Comparator;
+
+import net.minecraft.src.ItemStack;
+
+
+public class ComparaterItemStackID implements Comparator {
+
+       @Override
+       public int compare(Object o1, Object o2) {
+               ItemStack i1 = (ItemStack) o1;
+               ItemStack i2 = (ItemStack) o2;
+               return i1.itemID > i2.itemID ? 1 : -1;
+       }
+
+}
diff --git a/common/chemicraft/util/MaterialRecipe.java b/common/chemicraft/util/MaterialRecipe.java
new file mode 100644 (file)
index 0000000..1e7f2c5
--- /dev/null
@@ -0,0 +1,48 @@
+package chemicraft.util;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+
+import net.minecraft.src.ItemStack;
+import chemicraft.ChemiCraft;
+import chemicraft.inventory.InventoryChemicalCraftingMaterial;
+import chemicraft.inventory.InventoryChemicalCraftingNBT;
+
+public class MaterialRecipe {
+
+       private ChemicalNBTRecipe nbtRecipe;
+       private ItemStack result;
+       private ItemStack[] material;
+       private boolean isSharpless = true;
+
+       public MaterialRecipe(ItemStack par1ItemStack, ItemStack[] par2ItemStacks, ChemicalNBTRecipe par3NBTRecipe, boolean par4){
+               this.result = par1ItemStack;
+               this.material = par2ItemStacks;
+               this.nbtRecipe = par3NBTRecipe;
+               this.isSharpless = par4;
+       }
+
+       public ItemStack match(InventoryChemicalCraftingMaterial par1IInventory){
+               ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
+               ItemStack[] invItems;
+               for(int i = 0;i < par1IInventory.getSizeInventory();i++){
+                       invItemsArray.add(par1IInventory.getStackInSlot(i));
+               }
+               invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
+               invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
+
+               if(isSharpless){
+
+               }else{
+
+               }
+               return null;
+       }
+
+       public ItemStack[] nbtMatch(InventoryChemicalCraftingNBT par1IInventory){
+               return null;
+       }
+
+}
diff --git a/common/chemicraft/util/NBTRecipe.java b/common/chemicraft/util/NBTRecipe.java
deleted file mode 100644 (file)
index f636e76..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package chemicraft.util;
-
-import net.minecraft.src.ItemStack;
-
-public abstract class NBTRecipe {
-
-       public abstract ItemStack[] setNBT(ItemStack[] materials, ItemStack result);
-
-}
index 31a7153..a7c5e18 100644 (file)
@@ -5,54 +5,16 @@ import net.minecraft.src.NBTTagCompound;
 import net.minecraft.src.NBTTagList;
 import chemicraft.ChemiCraft;
 
-public class NBTRecipeGrenade extends NBTRecipe {
+public class NBTRecipeGrenade extends ChemicalNBTRecipe {
 
        @Override
-       public ItemStack[] setNBT(ItemStack[] materials, ItemStack result) {
+       public void setNBT(ItemStack[] materials, ItemStack result) {
 
-               ItemStack[] useItems = new ItemStack[3];
-
-               if(result.stackTagCompound == null){
-                       result.stackTagCompound = new NBTTagCompound();
-               }
-
-               if (!result.stackTagCompound.hasKey("Effect"))
-               {
-                       result.stackTagCompound.setTag("Effect", new NBTTagList("Effect"));
-               }
-
-               NBTTagList tagList = (NBTTagList) result.getTagCompound().getTag("Effect");
-               NBTTagCompound tag = new NBTTagCompound();
-               boolean isAssignment = false;
-               boolean var1 = false;
+       }
 
-               for(int i = 0;i < materials.length;i++){
-                       if(materials[i] != null){
-                               if(materials[i].itemID-256 == ChemiCraft.instance.atomsID && materials[i].getItemDamage() == ChemiCraft.HYDROGEN){
-                                       tag.setString("GrenadeEffect" + i, "Hydrogen");
-                                       useItems[i] = materials[i];
-                                       isAssignment = true;
-                                       var1 = true;
-                               }
-                               if(materials[i].itemID-256 == ChemiCraft.instance.atomsID && materials[i].getItemDamage() == ChemiCraft.CARBON){
-                                       tag.setString("GrenadeEffect" + i, "Carbon");
-                                       useItems[i] = materials[i];
-                                       isAssignment = true;
-                                       var1 = true;
-                               }
-                               if(materials[i].itemID-256 == ChemiCraft.instance.atomsID && materials[i].getItemDamage() == ChemiCraft.URANIUM){
-                                       tag.setString("GrenadeEffect" + i, "Uranium");
-                                       useItems[i] = materials[i];
-                                       isAssignment = true;
-                                       var1 = true;
-                               }
-                       }
-                       if(!var1) materials[i] = null;
-                       var1 = false;
-               }
-               tagList.appendTag(tag);
-               if(!isAssignment) result.stackTagCompound = null;
-               return useItems;
+       @Override
+       public ItemStack[] getMatchItems(ItemStack[] materials) {
+               return null;
        }
 
 }
index 8b75335..eca9e9d 100644 (file)
@@ -7,12 +7,12 @@ import net.minecraftforge.client.MinecraftForgeClient;
 import chemicraft.ChemiCraft;
 import chemicraft.gui.GuiChemicalCombinationTable;
 import chemicraft.gui.GuiDecompositionTable;
-import chemicraft.gui.GuiMaterialCraftingTable;
+import chemicraft.gui.GuiChemicalCraftingTable;
 import chemicraft.gui.GuiToolAndWeaponCraftingTable;
 import chemicraft.system.CommonProxy;
 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
 import chemicraft.tileentity.TileEntityDecompositionTable;
-import chemicraft.tileentity.TileEntityMaterialCraftingTable;
+import chemicraft.tileentity.TileEntityChemicalCraftingTable;
 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
 import cpw.mods.fml.client.FMLClientHandler;
 
@@ -26,7 +26,7 @@ public class ClientProxy extends CommonProxy {
                MinecraftForgeClient.preloadTexture(ChemiCraft.instance.itemTexture);
                MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiChemicalCombinationTexture);
                MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiDecompositionTexture);
-               MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiMaterialCraftingTexture);
+               MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiChemicalCraftingTexture);
                MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiToolAndWeaponCraftingTexture);
        }
 
@@ -43,8 +43,8 @@ public class ClientProxy extends CommonProxy {
                        return new GuiChemicalCombinationTable(player, (TileEntityChemicalCombinationTable) tileEntity);
                }else if(tileEntity instanceof TileEntityToolAndWeaponCraftingTable){
                        return new GuiToolAndWeaponCraftingTable(player, (TileEntityToolAndWeaponCraftingTable) tileEntity);
-               }else if(tileEntity instanceof TileEntityMaterialCraftingTable){
-                       return new GuiMaterialCraftingTable(player, (TileEntityMaterialCraftingTable) tileEntity);
+               }else if(tileEntity instanceof TileEntityChemicalCraftingTable){
+                       return new GuiChemicalCraftingTable(player, (TileEntityChemicalCraftingTable) tileEntity);
                }
                return null;
        }