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
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
public int decompositionTableID;\r
public int chemicalConbinationTableID;\r
public int toolAndWeaponCraftingTableID;\r
- public int materialCraftingTableID;\r
+ public int ChemicalCraftingTableID;\r
\r
/**\r
* GUIID\r
public int guiDecompositionTableID;\r
public int guiChemicalCombinationTableID;\r
public int guiToolAndWeaponCraftingTableID;\r
- public int guiMaterialCraftingTableID;\r
+ public int guiChemicalCraftingTableID;\r
\r
/**\r
* Block型変数\r
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
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
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
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
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
// 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
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
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
});\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
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
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>();
/**
- 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));
}
//以下システム関連//////////////////////////////////////////////////////
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;
}
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);
}
@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;
}
@Override
public TileEntity createNewTileEntity(World var1) {
- return new TileEntityMaterialCraftingTable();
+ return new TileEntityChemicalCraftingTable();
}
}
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);
}
--- /dev/null
+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));
+ }
+}
+++ /dev/null
-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));
- }
-
-}
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;
/**
/**
* 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);
}
--- /dev/null
+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() {
+
+ }
+
+}
--- /dev/null
+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() {
+
+ }
+
+}
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
@Override
public String getInvName() {
- return "MaterialCraftingInventory";
+ return "ChemicalCraftingInventory";
}
@Override
@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
}
+
}
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);
}
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 {
- 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;
}
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;
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;
}
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
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
--- /dev/null
+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();
+ }
+ }
+
+}
+++ /dev/null
-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();
- }
- }
-
-}
\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
--- /dev/null
+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);
+
+}
--- /dev/null
+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;
+ }
+
+}
--- /dev/null
+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;
+ }
+
+}
+++ /dev/null
-package chemicraft.util;
-
-import net.minecraft.src.ItemStack;
-
-public abstract class NBTRecipe {
-
- public abstract ItemStack[] setNBT(ItemStack[] materials, ItemStack result);
-
-}
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;
}
}
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;
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);
}
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;
}