aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohannes Gäßler <updrn@student.kit.edu>2017-05-25 18:34:00 +0200
committerJohannes Gäßler <updrn@student.kit.edu>2017-05-25 18:34:00 +0200
commit4c02055503fadd8a0a36690a369d88eb34dba609 (patch)
tree2e6e1dd4b2a4e0df291f1203c9511a67fa0ca544 /src
parent66c957a21eef949be18851c466bf1227ac3eba02 (diff)
downloadGT5-Unofficial-4c02055503fadd8a0a36690a369d88eb34dba609.tar.gz
GT5-Unofficial-4c02055503fadd8a0a36690a369d88eb34dba609.tar.bz2
GT5-Unofficial-4c02055503fadd8a0a36690a369d88eb34dba609.zip
Rewrote parts of the Oil Cracker so that it's in line with the new
recipes
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/enums/Materials.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java107
2 files changed, 64 insertions, 45 deletions
diff --git a/src/main/java/gregtech/api/enums/Materials.java b/src/main/java/gregtech/api/enums/Materials.java
index 71151e4787..33f3b1bb38 100644
--- a/src/main/java/gregtech/api/enums/Materials.java
+++ b/src/main/java/gregtech/api/enums/Materials.java
@@ -796,7 +796,7 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
public boolean mHasParentMod = true, mHasPlasma = false, mHasGas = false, mCustomOre = false;
public Fluid mSolid = null, mFluid = null, mGas = null, mPlasma = null;
- private boolean hasCorrespondingFluid = false, hasCorrespondingGas = false, canBeCracked = false, canBeSteamCracked = false;
+ private boolean hasCorrespondingFluid = false, hasCorrespondingGas = false, canBeCracked = false;
private Fluid[] hydroCrackedFluids = new Fluid[3], steamCrackedFluids = new Fluid[3];
/**
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java
index 0a4168c7ce..7dc2dfa2c6 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java
@@ -9,6 +9,7 @@ import gregtech.api.gui.GT_GUIContainer_MultiMachine;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_ModHandler;
@@ -20,10 +21,9 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_MultiBlockBase {
- private final FluidStack fluidToDecreaseEu = GT_ModHandler.getSteam(128);
- private final FluidStack fluidToIncreaseOutput = Materials.Hydrogen.getGas(64);
-
-
+ private ForgeDirection orientation;
+ private int controllerX, controllerZ;
+
public GT_MetaTileEntity_OilCracker(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -35,16 +35,15 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_MultiBlockBa
public String[] getDescription() {
return new String[]{
"Controller Block for the Oil Cracking Unit",
- "Cracks heavy oil into lighter parts",
+ "Thermally cracks heavy hydrocarbons into lighter fractions",
"Size(WxHxD): 5x3x3 (Hollow), Controller (Front center)",
"Ring of 8 Cupronickel Coils (Each side of Controller)",
- "1x Input Hatch (Any left side casing)",
- "1x Input Hatch (Any middle ring casing)",
- "1x Output Hatch (Any right side casing)",
+ "1x Hydrocarbon Input Bus/Hatch (Any left side casing)",
+ "1x Steam/Hydrogen Input Hatch (Any middle ring casing)",
+ "1x Cracked Hydrocarbon Output Hatch (Any right side casing)",
"1x Maintenance Hatch (Any middle ring casing)",
"1x Energy Hatch (Any middle ring casing)",
- "Clean Stainless Steel Machine Casings for the rest (18 at least!)",
- "Optional Steam(50% less EU/t) or Hydrogen(30% more output)"};
+ "Clean Stainless Steel Machine Casings for the rest (18 at least!)"};
}
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
@@ -62,47 +61,38 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_MultiBlockBa
@Override
public boolean checkRecipe(ItemStack aStack) {
ArrayList<FluidStack> tInputList = getStoredFluids();
- for (FluidStack tInput : tInputList) {
- long tVoltage = getMaxInputVoltage();
- byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
-
- GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sCrakingRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], new FluidStack[]{tInput}, new ItemStack[]{});
- if (tRecipe != null) {
- if (tRecipe.isRecipeInputEqual(true, new FluidStack[]{tInput}, new ItemStack[]{})) {
- boolean needDecreaseEu = depleteInput(fluidToDecreaseEu);
- boolean needIncreaseOutput = !needDecreaseEu && depleteInput(fluidToIncreaseOutput);
-
- 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 (needDecreaseEu) this.mEUt = this.mEUt / 2;
- if (this.mEUt > 0) {
- this.mEUt = (-this.mEUt);
- }
- this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
- this.mOutputFluids = new FluidStack[]{tRecipe.getFluidOutput(0)};
- if (needIncreaseOutput) this.mOutputFluids[0].amount = this.mOutputFluids[0].amount * 130 / 100;
- return true;
- }
+ FluidStack[] tFluidInputs = tInputList.toArray(new FluidStack[tInputList.size()]);
+ long tVoltage = getMaxInputVoltage();
+ byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
+
+ GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sCrakingRecipes.findRecipe(
+ getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluidInputs ,new ItemStack[]{mInventory[1]});
+ if (tRecipe != null && tRecipe.isRecipeInputEqual(true, tFluidInputs, new ItemStack[]{mInventory[1]})) {
+ this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
+ this.mEfficiencyIncrease = 10000;
+ 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);
}
+ this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
+ this.mOutputFluids = new FluidStack[]{tRecipe.getFluidOutput(0)};
+ return true;
}
return false;
}
@Override
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
+ this.orientation = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing());
+ this.controllerX = aBaseMetaTileEntity.getXCoord();
+ this.controllerZ = aBaseMetaTileEntity.getZCoord();
+ int xDir = this.orientation.offsetX;
+ int zDir = this.orientation.offsetZ;
int amount = 0;
replaceDeprecatedCoils(aBaseMetaTileEntity);
if (xDir != 0) {
@@ -252,4 +242,33 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_MultiBlockBa
}
}
}
+
+ @Override
+ public ArrayList<FluidStack> getStoredFluids() {
+ ArrayList<FluidStack> rList = new ArrayList<FluidStack>();
+ for (GT_MetaTileEntity_Hatch_Input tHatch : mInputHatches) {
+ tHatch.mRecipeMap = getRecipeMap();
+ if (isValidMetaTileEntity(tHatch) && tHatch.getFillableStack() != null) {
+ FluidStack tStack = tHatch.getFillableStack();
+ if (tStack.isFluidEqual(GT_ModHandler.getSteam(1000)) || tStack.isFluidEqual(Materials.Hydrogen.getGas(1000))) {
+ if (isHatchInMiddleRing(tHatch)) {
+ rList.add(tStack);
+ }
+ } else {
+ if (!isHatchInMiddleRing(tHatch)) {
+ rList.add(tStack);
+ }
+ }
+ }
+ }
+ return rList;
+ }
+
+ private boolean isHatchInMiddleRing(GT_MetaTileEntity_Hatch_Input inputHatch){
+ if (orientation == ForgeDirection.NORTH || orientation == ForgeDirection.SOUTH) {
+ return inputHatch.getBaseMetaTileEntity().getXCoord() == this.controllerX;
+ } else {
+ return inputHatch.getBaseMetaTileEntity().getZCoord() == this.controllerZ;
+ }
+ }
}