aboutsummaryrefslogtreecommitdiff
path: root/main/java/gregtech/common/tileentities/machines/multi
diff options
context:
space:
mode:
authorBlood-Asp <Blood@Asp>2015-05-10 11:23:53 +0200
committerBlood-Asp <Blood@Asp>2015-05-10 11:23:53 +0200
commit1d802999d843e54dfef3ea294e420fd9d8557aa5 (patch)
treeeeb90216b8d5dcdbd02071e37333a9c64276d4c7 /main/java/gregtech/common/tileentities/machines/multi
parenteba3a051ca6f7f65e085c69e382656780ebf1fdb (diff)
downloadGT5-Unofficial-1d802999d843e54dfef3ea294e420fd9d8557aa5.tar.gz
GT5-Unofficial-1d802999d843e54dfef3ea294e420fd9d8557aa5.tar.bz2
GT5-Unofficial-1d802999d843e54dfef3ea294e420fd9d8557aa5.zip
More updates.
Many bugfixes + 5 Tier Pump + API.jar
Diffstat (limited to 'main/java/gregtech/common/tileentities/machines/multi')
-rw-r--r--main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java20
-rw-r--r--main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java179
2 files changed, 187 insertions, 12 deletions
diff --git a/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java b/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java
index bdfb51d5ac..975089e607 100644
--- a/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java
+++ b/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java
@@ -249,10 +249,8 @@ public boolean checkRecipe(ItemStack aStack) {
if(tInput2.mFluid!=null&& tInput2.mFluid!=null&&tInput2.mFluid.getFluid().getID()==this.mLastRecipe.mFluidInputs[1].getFluid().getID()&&tInput2.mFluid.amount>=this.mLastRecipe.mFluidInputs[1].amount&&getMaxInputVoltage()>=this.mLastRecipe.mEUt){
tInput.drain(this.mLastRecipe.mFluidInputs[0].amount, true);
tInput2.drain(this.mLastRecipe.mFluidInputs[1].amount, true);
-
- this.mEUt = -(this.mLastRecipe.mEUt*overclock(this.mLastRecipe.mEUt));
+ this.mEUt = (this.mLastRecipe.mEUt*overclock(this.mLastRecipe.mEUt));
this.mMaxProgresstime = this.mLastRecipe.mDuration/overclock(this.mLastRecipe.mEUt);
-
this.mEfficiencyIncrease = 10000;
this.mOutputFluids = this.mLastRecipe.mFluidOutputs;
turnCasingActive(true);
@@ -268,16 +266,16 @@ public boolean checkRecipe(ItemStack aStack) {
FluidStack tFluid = tRecipe.mFluidInputs[0];
if(tFluid!=null){
for(GT_MetaTileEntity_Hatch_Input tInput : this.mInputHatches){
- if(tFluid.fluid !=null&& tInput.getFluid()!=null && tFluid.fluid.getID()==tInput.getFluid().getFluid().getID()&&tFluid.amount<=tInput.getFluid().amount){
+ if(tFluid.getFluid() !=null&& tInput.getFluid()!=null && tFluid.getFluid().getID()==tInput.getFluid().getFluid().getID()&&tFluid.amount<=tInput.getFluid().amount){
FluidStack tFluid2 = tRecipe.mFluidInputs[1];
if(tFluid2!=null){
for(GT_MetaTileEntity_Hatch_Input tInput2 : this.mInputHatches){
- if(tFluid2.fluid !=null&& tInput2.getFluid()!=null&&tFluid2.fluid.getID()==tInput2.getFluid().getFluid().getID()&&tFluid2.amount<=tInput2.getFluid().amount&&getMaxInputVoltage()>=tRecipe.mEUt&&this.mEUStore>=tRecipe.mSpecialValue){
+ if(tFluid2.getFluid() !=null&& tInput2.getFluid()!=null&&tFluid2.getFluid().getID()==tInput2.getFluid().getFluid().getID()&&tFluid2.amount<=tInput2.getFluid().amount&&getMaxInputVoltage()>=tRecipe.mEUt&&this.mEUStore>=tRecipe.mSpecialValue){
tInput.drain(tFluid.amount, true);
tInput2.drain(tFluid2.amount, true);
this.mLastRecipe=tRecipe;
- this.mEUt = -(tRecipe.mEUt*overclock(this.mLastRecipe.mEUt));
+ this.mEUt = (tRecipe.mEUt*overclock(this.mLastRecipe.mEUt));
this.mMaxProgresstime = tRecipe.mDuration/overclock(this.mLastRecipe.mEUt);
this.mEfficiencyIncrease = 10000;
@@ -355,11 +353,7 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
}
if (getRepairStatus() > 0) {
if (mMaxProgresstime > 0 && doRandomMaintenanceDamage()) {
- if (aBaseMetaTileEntity.decreaseStoredEnergyUnits(mEUt, false)) {
- if (!polluteEnvironment(getPollutionPerTick(mInventory[1]))) {
- stopMachine();
- }
-
+ this.getBaseMetaTileEntity().decreaseStoredEnergyUnits(mEUt, true);
if (mMaxProgresstime > 0 && ++mProgresstime>=mMaxProgresstime) {
if (mOutputItems != null) for (ItemStack tStack : mOutputItems) if (tStack != null) addOutput(tStack);
if (mOutputFluids != null) for (FluidStack tStack : mOutputFluids) if (tStack != null) addOutput(tStack);
@@ -371,7 +365,6 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
this.mEUStore=(int) aBaseMetaTileEntity.getStoredEU();
if (aBaseMetaTileEntity.isAllowedToWork()) checkRecipe(mInventory[1]);
}
- }
} else {
if (aTick % 100 == 0 || aBaseMetaTileEntity.hasWorkJustBeenEnabled() || aBaseMetaTileEntity.hasInventoryBeenModified()) {
turnCasingActive(mMaxProgresstime>0);
@@ -385,10 +378,12 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
}
}
} else {
+ this.mLastRecipe=null;
stopMachine();
}
} else {
turnCasingActive(false);
+ this.mLastRecipe=null;
stopMachine();
}
}
@@ -401,6 +396,7 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
public boolean onRunningTick(ItemStack aStack) {
if (mEUt < 0) {
if (!drainEnergyInput(((long)-mEUt * 10000) / Math.max(1000, mEfficiency))) {
+ this.mLastRecipe=null;
stopMachine();
return false;
}
diff --git a/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java b/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java
new file mode 100644
index 0000000000..9d15000b36
--- /dev/null
+++ b/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java
@@ -0,0 +1,179 @@
+package gregtech.common.tileentities.machines.multi;
+
+import net.minecraft.item.ItemStack;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Textures;
+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_Dynamo;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Utility;
+
+public class GT_MetaTileEntity_LargeTurbine extends GT_MetaTileEntity_MultiBlockBase{
+
+ public GT_MetaTileEntity_LargeTurbine(int aID, String aName, String aNameRegional){super(aID, aName, aNameRegional);}
+ public GT_MetaTileEntity_LargeTurbine(String aName){super(aName);}
+
+ @Override
+ public String[] getDescription() {
+ return new String[]{"Consumes 1600 Liters of Steam per Tick"};
+ }
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
+ return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[1][aColorIndex+1],new GT_RenderedTexture(Textures.BlockIcons.STEAM_TURBINE_SIDE)};
+ }
+
+ @Override
+ public boolean isCorrectMachinePart(ItemStack aStack) {
+ return getMaxEfficiency(aStack) > 0;
+ }
+
+ @Override
+ public boolean checkRecipe(ItemStack aStack) {
+
+ if (depleteInput(GT_ModHandler.getSteam(1600L)))
+ {
+ this.mEUt = 800;
+ this.mMaxProgresstime = 1;
+ if (ItemList.Component_Turbine_Bronze.isStackEqual(aStack, true, true)) {
+ this.mEfficiencyIncrease = (this.mMaxProgresstime * 10);
+ } else if (ItemList.Component_Turbine_Steel.isStackEqual(aStack, true, true)) {
+ this.mEfficiencyIncrease = (this.mMaxProgresstime * 20);
+ } else if (ItemList.Component_Turbine_Magnalium.isStackEqual(aStack, true, true)) {
+ this.mEfficiencyIncrease = (this.mMaxProgresstime * 50);
+ } else if (ItemList.Component_Turbine_TungstenSteel.isStackEqual(aStack, true, true)) {
+ this.mEfficiencyIncrease = (this.mMaxProgresstime * 15);
+ } else if (ItemList.Component_Turbine_Carbon.isStackEqual(aStack, true, true)) {
+ this.mEfficiencyIncrease = (this.mMaxProgresstime * 100);
+ } else {
+ this.mEfficiencyIncrease = (this.mMaxProgresstime * 20);
+ }
+ addOutput(GT_ModHandler.getWater(10L));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+
+ byte tSide = getBaseMetaTileEntity().getBackFacing();
+ if ((getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 1)) && (getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 2)))
+ {
+ int tAirCount = 0;
+ for (byte i = -1; i < 2; i = (byte)(i + 1)) {
+ for (byte j = -1; j < 2; j = (byte)(j + 1)) {
+ for (byte k = -1; k < 2; k = (byte)(k + 1)) {
+ if (getBaseMetaTileEntity().getAirOffset(i, j, k)) {
+ tAirCount++;
+ }
+ }
+ }
+ }
+ if (tAirCount != 10) {
+ return false;
+ }
+ for (byte i = 2; i < 6; i = (byte)(i + 1))
+ {
+ IGregTechTileEntity tTileEntity;
+ if ((null != (tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(i, 2))) &&
+ (tTileEntity.getFrontFacing() == getBaseMetaTileEntity().getFrontFacing()) && (tTileEntity.getMetaTileEntity() != null) &&
+ ((tTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_LargeTurbine))) {
+ return false;
+ }
+ }
+ int tX = getBaseMetaTileEntity().getXCoord();int tY = getBaseMetaTileEntity().getYCoord();int tZ = getBaseMetaTileEntity().getZCoord();
+ for (byte i = -1; i < 2; i = (byte)(i + 1)) {
+ for (byte j = -1; j < 2; j = (byte)(j + 1)) {
+ if ((i != 0) || (j != 0)) {
+ for (byte k = 0; k < 4; k = (byte)(k + 1)) {
+ if (((i == 0) || (j == 0)) && ((k == 1) || (k == 2)))
+ {
+ if (getBaseMetaTileEntity().getBlock(tX + (tSide == 5 ? k : tSide < 4 ? i : -k), tY + j, tZ + (tSide < 4 ? -k : tSide == 3 ? k : i)) == GregTech_API.sBlockCasings4)
+ {
+ if (getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide < 4 ? i : -k), tY + j, tZ + (tSide < 4 ? -k : tSide == 3 ? k : i)) == 13) {}
+ }
+ else if (!addToMachineList(getBaseMetaTileEntity().getIGregTechTileEntity(tX + (tSide == 5 ? k : tSide < 4 ? i : -k), tY + j, tZ + (tSide < 4 ? -k : tSide == 3 ? k : i)))) {
+ return false;
+ }
+ }
+ else if (getBaseMetaTileEntity().getBlock(tX + (tSide == 5 ? k : tSide < 4 ? i : -k), tY + j, tZ + (tSide < 4 ? -k : tSide == 3 ? k : i)) == GregTech_API.sBlockCasings4)
+ {
+ if (getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide < 4 ? i : -k), tY + j, tZ + (tSide < 4 ? -k : tSide == 3 ? k : i)) == 13) {}
+ }
+ else {
+ return false;
+ }
+ }
+ }
+ }
+ }
+ this.mDynamoHatches.clear();
+ IGregTechTileEntity tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 3);
+ if ((tTileEntity != null) && (tTileEntity.getMetaTileEntity() != null)) {
+ if ((tTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Dynamo)) {
+ this.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo)tTileEntity.getMetaTileEntity());
+ } else {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ return false;
+ }
+ return true;
+ }
+
+ private boolean addToMachineList(IGregTechTileEntity tTileEntity){
+ return ((!addMaintenanceToMachineList(tTileEntity, 11)) && (!addInputToMachineList(tTileEntity, 11)) && (!addOutputToMachineList(tTileEntity, 11)));
+ }
+
+ @Override
+ public int getDamageToComponent(ItemStack aStack) {
+ return GT_Utility.areStacksEqual(GT_ModHandler.getModItem("Railcraft","part.turbine.rotor", 1L, 32767), aStack) ? 2 : 1;
+ }
+
+
+ public int getMaxEfficiency(ItemStack aStack)
+ {
+ if (GT_Utility.isStackInvalid(aStack)) {
+ return 0;
+ }
+ if (ItemList.Component_Turbine_Bronze.isStackEqual(aStack, true, true)) {
+ return 6000;
+ }
+ if (ItemList.Component_Turbine_Steel.isStackEqual(aStack, true, true)) {
+ return 8000;
+ }
+ if (ItemList.Component_Turbine_Magnalium.isStackEqual(aStack, true, true)) {
+ return 10000;
+ }
+ if (ItemList.Component_Turbine_TungstenSteel.isStackEqual(aStack, true, true)) {
+ return 9000;
+ }
+ if (ItemList.Component_Turbine_Carbon.isStackEqual(aStack, true, true)) {
+ return 12500;
+ }
+ if (GT_Utility.areStacksEqual(aStack, GT_ModHandler.getModItem("Railcraft","part.turbine.rotor", 1L, 32767))) {
+ return 8000;
+ }
+ return 0;
+ }
+
+
+ @Override
+ public int getPollutionPerTick(ItemStack aStack) {return 0;}
+ @Override
+ public int getAmountOfOutputs() {return 0;}
+ @Override
+ public boolean explodesOnComponentBreak(ItemStack aStack) {return true;}
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {return new GT_MetaTileEntity_LargeTurbine(mName);}
+
+}