diff options
author | Blood-Asp <Blood@Asp> | 2015-05-10 11:23:53 +0200 |
---|---|---|
committer | Blood-Asp <Blood@Asp> | 2015-05-10 11:23:53 +0200 |
commit | 1d802999d843e54dfef3ea294e420fd9d8557aa5 (patch) | |
tree | eeb90216b8d5dcdbd02071e37333a9c64276d4c7 /main/java/gregtech/common/tileentities/machines/multi | |
parent | eba3a051ca6f7f65e085c69e382656780ebf1fdb (diff) | |
download | GT5-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')
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);} + +} |