aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities
diff options
context:
space:
mode:
authorDream-Master <dream-master@gmx.net>2016-06-30 22:28:48 +0200
committerDream-Master <dream-master@gmx.net>2016-06-30 22:28:48 +0200
commitc3fcd31146fdddf9beaf8622316988cc58a78ab3 (patch)
treea71a0ed59d17c7a917b2c9a0acb27393f6b57d87 /src/main/java/gregtech/common/tileentities
parent6daf342c2fc3ca2aec1130c30de302622b26ac3e (diff)
downloadGT5-Unofficial-c3fcd31146fdddf9beaf8622316988cc58a78ab3.tar.gz
GT5-Unofficial-c3fcd31146fdddf9beaf8622316988cc58a78ab3.tar.bz2
GT5-Unofficial-c3fcd31146fdddf9beaf8622316988cc58a78ab3.zip
Finish Assemblyline recipe check (Blood Asp)
Diffstat (limited to 'src/main/java/gregtech/common/tileentities')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java8
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java110
2 files changed, 64 insertions, 54 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java
index 857d2c5703..86d9864b7f 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java
@@ -162,16 +162,16 @@ public class GT_MetaTileEntity_Scanner
if (tNBT == null) {
tNBT = new NBTTagCompound();
}
- tNBT.setTag("output", new NBTTagCompound());
+ tNBT.setTag("output", tRecipe.mOutput.writeToNBT(new NBTTagCompound()));
tNBT.setInteger("time", tRecipe.mDuration);
tNBT.setInteger("eu", tRecipe.mEUt);
for(int i = 0 ; i < tRecipe.mInputs.length ; i++){
- tNBT.setTag(""+i, new NBTTagCompound());
+ tNBT.setTag(""+i, tRecipe.mInputs[i].writeToNBT(new NBTTagCompound()));
}
for(int i = 0 ; i < tRecipe.mFluidInputs.length ; i++){
- tNBT.setTag("f"+i, new NBTTagCompound());
+ tNBT.setTag("f"+i, tRecipe.mFluidInputs[i].writeToNBT(new NBTTagCompound()));
}
this.mOutputItems[0].setTagCompound(tNBT);
@@ -224,4 +224,4 @@ public class GT_MetaTileEntity_Scanner
public void startProcess() {
sendLoopStart((byte) 1);
}
-}
+} \ No newline at end of file
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
index e4a7d0dff5..7855601b70 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
@@ -1,6 +1,7 @@
package gregtech.common.tileentities.machines.multi;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
import gregtech.api.interfaces.ITexture;
@@ -13,6 +14,7 @@ import gregtech.api.util.GT_Utility;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
@@ -55,7 +57,7 @@ public class GT_MetaTileEntity_AssemblyLine
}
public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return GT_Recipe.GT_Recipe_Map.sImplosionRecipes;
+ return null;
}
public boolean isCorrectMachinePart(ItemStack aStack) {
@@ -67,63 +69,71 @@ public class GT_MetaTileEntity_AssemblyLine
}
public boolean checkRecipe(ItemStack aStack) {
- ArrayList<ItemStack> tInputList = getStoredInputs();
- for (int i = 0; i < tInputList.size() - 1; i++) {
- for (int j = i + 1; j < tInputList.size(); j++) {
- if (GT_Utility.areStacksEqual((ItemStack) tInputList.get(i), (ItemStack) tInputList.get(j))) {
- if (((ItemStack) tInputList.get(i)).stackSize >= ((ItemStack) tInputList.get(j)).stackSize) {
- tInputList.remove(j--);
- } else {
- tInputList.remove(i--);
- break;
- }
+ if(!GT_Utility.isStackValid(mInventory[1]) && !ItemList.Tool_DataStick.isStackEqual(mInventory[1], false, true))return false;
+ NBTTagCompound tTag = mInventory[1].getTagCompound();
+ if(tTag==null)return false;
+ ItemStack tStack[] = new ItemStack[15];
+ for(int i = 0;i<15;i++){
+ if(tTag.hasKey(""+i)){
+ tStack[i] = GT_Utility.loadItem(tTag, ""+i);
+ if(tStack[i]!=null){
+ if(mInputBusses.get(i)==null)return false;
+ if(GT_Utility.areStacksEqual(tStack[i],mInputBusses.get(i).getBaseMetaTileEntity().getStackInSlot(0),true) && tStack[i].stackSize <= mInputBusses.get(i).getBaseMetaTileEntity().getStackInSlot(0).stackSize){
+ }else{return false;}
+ }}
+ }
+ FluidStack[] tFluids = new FluidStack[4];
+ for(int i = 0;i<4;i++){
+ if(tTag.hasKey("f"+i)){
+ tFluids[i] = GT_Utility.loadFluid(tTag, "f"+i);
+ if(tFluids[i]!=null){
+ if(mInputHatches.get(i)==null)return false;
+ if(mInputHatches.get(i).mFluid!=null && GT_Utility.areFluidsEqual(mInputHatches.get(i).mFluid, tFluids[i], true) && mInputHatches.get(i).mFluid.amount>=tFluids[i].amount){
+ }else{return false;}
}
}
}
- ItemStack[] tInputs = (ItemStack[]) Arrays.copyOfRange(tInputList.toArray(new ItemStack[tInputList.size()]), 0, 2);
-
- ArrayList<FluidStack> tFluidList = getStoredFluids();
- for (int i = 0; i < tFluidList.size() - 1; i++) {
- for (int j = i + 1; j < tFluidList.size(); j++) {
- if (GT_Utility.areFluidsEqual((FluidStack) tFluidList.get(i), (FluidStack) tFluidList.get(j))) {
- if (((FluidStack) tFluidList.get(i)).amount >= ((FluidStack) tFluidList.get(j)).amount) {
- tFluidList.remove(j--);
- } else {
- tFluidList.remove(i--);
- break;
- }
+ if(tTag.hasKey("output")){
+ mOutputItems = new ItemStack[]{GT_Utility.loadItem(tTag, "output")};
+ if(mOutputItems==null||mOutputItems[0]==null||!GT_Utility.isStackValid(mOutputItems[0]))return false;
+ }else{return false;}
+ if(tTag.hasKey("time")){
+ mMaxProgresstime = tTag.getInteger("time");
+ if(mMaxProgresstime<=0)return false;
+ }else{return false;}
+ if(tTag.hasKey("eu")){
+ mEUt = tTag.getInteger("eu");
+ }else{return false;}
+ for(int i = 0;i<15;i++){
+ if(tStack[i]!=null){
+ mInputBusses.get(i).getBaseMetaTileEntity().getStackInSlot(0).stackSize -= tStack[i].stackSize;
+ if(mInputBusses.get(i).getBaseMetaTileEntity().getStackInSlot(0).stackSize <= 0){
}
}
}
- FluidStack[] tFluids = (FluidStack[]) Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tInputList.size()]), 0, 1);
- if (tInputList.size() > 0) {
- long tVoltage = getMaxInputVoltage();
- byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
- GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sAssemblylineRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs);
- if ((tRecipe != null) && (tRecipe.isRecipeInputEqual(true, tFluids, tInputs))) {
- this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
- this.mEfficiencyIncrease = 10000;
- if (tRecipe.mEUt <= 16) {
- this.mEUt = (tRecipe.mEUt * (1 << tTier - 1) * (1 << tTier - 1));
- this.mMaxProgresstime = (tRecipe.mDuration / (1 << tTier - 1));
- } else {
- this.mEUt = tRecipe.mEUt;
- this.mMaxProgresstime = tRecipe.mDuration;
- while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) {
- this.mEUt *= 4;
- this.mMaxProgresstime /= 2;
- }
- }
- if (this.mEUt > 0) {
- this.mEUt = (-this.mEUt);
+
+ for(int i = 0;i<4;i++){
+ if(tFluids[i]!=null){
+ mInputHatches.get(i).mFluid.amount -= tFluids[i].amount;
+ if(mInputHatches.get(i).mFluid.amount<=0){
+ mInputHatches.get(i).mFluid = null;
}
- this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
- this.mOutputItems = new ItemStack[]{tRecipe.getOutput(0), tRecipe.getOutput(1)};
- updateSlots();
- return true;
}
}
- return false;
+ byte tTier = (byte) Math.max(1, GT_Utility.getTier(getMaxInputVoltage()));
+ this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
+ this.mEfficiencyIncrease = 10000;
+ if (mEUt <= 16) {
+ this.mEUt = (mEUt * (1 << tTier - 1) * (1 << tTier - 1));
+ this.mMaxProgresstime = (mMaxProgresstime / (1 << tTier - 1));
+ } else {
+ while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) {
+ this.mEUt *= 4;
+ this.mMaxProgresstime /= 2;
+ }
+ }
+ this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
+ return true;
}
public void startSoundLoop(byte aIndex, double aX, double aY, double aZ) {
@@ -213,7 +223,7 @@ public class GT_MetaTileEntity_AssemblyLine
}
public int getPollutionPerTick(ItemStack aStack) {
- return 1000;
+ return 0;
}
public int getDamageToComponent(ItemStack aStack) {