Skip to content
This repository has been archived by the owner on May 25, 2024. It is now read-only.

Commit

Permalink
supercritial steam power cycle system (#51)
Browse files Browse the repository at this point in the history
Co-authored-by: Martin Robertz <[email protected]>
  • Loading branch information
GlodBlock and Dream-Master authored Jul 5, 2022
1 parent b180ae9 commit 36301fe
Show file tree
Hide file tree
Showing 7 changed files with 240 additions and 13 deletions.
1 change: 1 addition & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Add your dependencies here

dependencies {

compile('com.github.GTNewHorizons:GT5-Unofficial:5.09.40.65-pre:dev')
compile('com.github.GTNewHorizons:StructureLib:1.0.15:dev')
compile('com.github.GTNewHorizons:bartworks:0.5.53-pre:dev')
Expand Down
194 changes: 194 additions & 0 deletions src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
package goodgenerator.blocks.tileEntity;

import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM;
import goodgenerator.util.DescTextLocalization;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
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;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Utility;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;

import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
import static gregtech.api.enums.Textures.BlockIcons.*;
import static gregtech.api.util.GT_StructureUtility.ofFrame;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;

public class CoolantTower extends GT_MetaTileEntity_TooltipMultiBlockBase_EM implements IConstructable {

protected IStructureDefinition<CoolantTower> multiDefinition = null;
private final int CASING_INDEX = 1542;

public CoolantTower(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
}

public CoolantTower(String name) {
super(name);
}

@Override
public IStructureDefinition<? extends GT_MetaTileEntity_MultiblockBase_EM> getStructure_EM() {
if(multiDefinition == null) {
multiDefinition = StructureDefinition
.<CoolantTower>builder()
.addShape(mName,
transpose(new String[][]{
{" ", " ", " BBB ", " B B ", " B B ", " B B ", " B B ", " B B ", " BBB ", " ", " "},
{" ", " ", " BBB ", " BBBBB ", " BB BB ", " BB BB ", " BB BB ", " BBBBB ", " BBB ", " ", " "},
{" ", " ", " ", " BBB ", " B B ", " B B ", " B B ", " BBB ", " ", " ", " "},
{" ", " ", " ", " BBB ", " B B ", " B B ", " B B ", " BBB ", " ", " ", " "},
{" ", " ", " ", " BBB ", " B B ", " B B ", " B B ", " BBB ", " ", " ", " "},
{" ", " ", " BBB ", " BBBBB ", " BB BB ", " BB BB ", " BB BB ", " BBBBB ", " BBB ", " ", " "},
{" ", " ", " BBB ", " B B ", " B B ", " B B ", " B B ", " B B ", " BBB ", " ", " "},
{" ", " ", " BBB ", " B B ", " B B ", " B B ", " B B ", " B B ", " BBB ", " ", " "},
{" ", " BBB ", " BBBBB ", " BB BB ", " BB BB ", " BB BB ", " BB BB ", " BB BB ", " BBBBB ", " BBB ", " "},
{" ", " BBB ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " BBB ", " "},
{" ", " BBBBB ", " BB BB ", " BB BB ", " B B ", " B B ", " B B ", " BB BB ", " BB BB ", " BBBBB ", " "},
{" HH~HH ", " HBBBBBH ", " HB BH ", "HB BH", "HB BH", "HB BH", "HB BH", "HB BH", " HB BH ", " HBBBBBH ", " HHHHH "},
{" CCCCC ", " C C ", " C C ", "C C", "C C", "C C", "C C", "C C", " C C ", " C C ", " CCCCC "},
})
).addElement('B',
ofBlockAnyMeta(GregTech_API.sBlockConcretes, 8)
).addElement('C',
ofFrame(Materials.TungstenCarbide)
).addElement('H',
ofChain(
ofHatchAdder(
CoolantTower::addIOFluidToMachineList, CASING_INDEX, 1
),
ofBlockAnyMeta(GregTech_API.sBlockConcretes, 8)
)
)
.build();
}
return multiDefinition;
}

public final boolean addIOFluidToMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
if (aTileEntity == null) {
return false;
} else {
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) {
return false;
} else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input)aMetaTileEntity);
} else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output)aMetaTileEntity);
} else {
return false;
}
}
}

@Override
public boolean checkMachine_EM(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
mWrench = true;
mScrewdriver = true;
mSoftHammer = true;
mHardHammer = true;
mSolderingTool = true;
mCrowbar = true;
return structureCheck_EM(mName, 5, 11, 0);
}

@Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType("Coolant Tower")
.addInfo("Controller block for the Coolant Tower.")
.addInfo("Turn Steam back to Distilled Water.")
.addInfo(BLUE_PRINT_INFO)
.addSeparator()
.addController("Mid of the second layer.")
.addInputHatch("Input Hatch", 1)
.addOutputHatch("Output Hatch", 1)
.toolTipFinisher("Good Generator");
return tt;
}

@Override
public void construct(ItemStack stackSize, boolean hintsOnly) {
structureBuild_EM(mName, 5, 11, 0, stackSize, hintsOnly);
}

@Override
public String[] getStructureDescription(ItemStack stackSize) {
return DescTextLocalization.addText("CoolantTower.hint", 3);
}

@Override
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new CoolantTower(mName);
}

@Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
super.onPostTick(aBaseMetaTileEntity, aTick);
if (aTick % 72000 == 0) {
mWrench = true;
mScrewdriver = true;
mSoftHammer = true;
mHardHammer = true;
mSolderingTool = true;
mCrowbar = true;
}
}

@Override
public int getMaxEfficiency(ItemStack aStack) {
return 10000;
}

@Override
public boolean onRunningTick(ItemStack aStack) {
return true;
}

@Override
public boolean checkRecipe_EM(ItemStack aStack) {
this.mMaxProgresstime = 100;
int steam = 0;
for (FluidStack steams : getStoredFluids()) {
if (GT_Utility.areFluidsEqual(steams, GT_ModHandler.getSteam(1))) {
steam += steams.amount;
}
}
steam = steam / 160 * 160;
depleteInput(GT_ModHandler.getSteam(steam));
addOutput(GT_ModHandler.getDistilledWater(steam / 160));
return true;
}

@Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
if (aSide == aFacing) {
if (aActive)
return new ITexture[]{
casingTexturePages[12][6],
TextureFactory.builder().addIcon(OVERLAY_FRONT_HEAT_EXCHANGER_ACTIVE).extFacing().build(),
TextureFactory.builder().addIcon(OVERLAY_FRONT_HEAT_EXCHANGER_ACTIVE_GLOW).extFacing().glow().build()};
return new ITexture[]{
casingTexturePages[12][6],
TextureFactory.builder().addIcon(OVERLAY_FRONT_HEAT_EXCHANGER).extFacing().build(),
TextureFactory.builder().addIcon(OVERLAY_FRONT_HEAT_EXCHANGER_GLOW).extFacing().glow().build()};
}
return new ITexture[]{casingTexturePages[12][6]};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,11 @@ public void drawExtras(int aRecipeIndex) {
FluidStack[] Outputs = ((CachedDefaultRecipe) this.arecipes.get(aRecipeIndex)).mRecipe.mFluidOutputs;
int Threshold = ((CachedDefaultRecipe) this.arecipes.get(aRecipeIndex)).mRecipe.mSpecialValue;
drawText(10, 73, StatCollector.translateToLocal("value.extreme_heat_exchanger.0") + " " + GT_Utility.formatNumbers(Inputs[0].amount) + " L/s", -16777216);
drawText(10, 83, StatCollector.translateToLocal("value.extreme_heat_exchanger.1") + " " + GT_Utility.formatNumbers(Inputs[1].amount) + " L/s", -16777216);
drawText(10, 93, StatCollector.translateToLocal("value.extreme_heat_exchanger.2") + " " + GT_Utility.formatNumbers(Outputs[0].amount) + " L/s", -16777216);
drawText(10, 103, StatCollector.translateToLocal("value.extreme_heat_exchanger.3") + " " + GT_Utility.formatNumbers(Outputs[1].amount) + " L/s", -16777216);
drawText(10, 113, StatCollector.translateToLocal("value.extreme_heat_exchanger.4") + " " + Threshold + " L/s", -16777216);
drawText(10, 83, StatCollector.translateToLocal("value.extreme_heat_exchanger.1"), -16777216);
drawText(10, 93, GT_Utility.formatNumbers(Outputs[0].amount / 160) + " L/s", -16777216);
drawText(10, 103, StatCollector.translateToLocal("value.extreme_heat_exchanger.2"), -16777216);
drawText(10, 113, GT_Utility.formatNumbers(Outputs[1].amount / 160) + " L/s", -16777216);
drawText(10, 123, StatCollector.translateToLocal("value.extreme_heat_exchanger.4") + " " + Threshold + " L/s", -16777216);
}

}
4 changes: 4 additions & 0 deletions src/main/java/goodgenerator/loader/Loaders.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import cpw.mods.fml.common.registry.GameRegistry;
import goodgenerator.util.CrackRecipeAdder;
import goodgenerator.util.MaterialFix;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
Expand Down Expand Up @@ -109,6 +110,7 @@ public class Loaders {
public static ItemStack XHE;
public static ItemStack PA;
public static ItemStack LES;
public static ItemStack CT;
public static ItemStack[] LFC = new ItemStack[5];

public static ItemStack[] NeutronAccelerators = new ItemStack[9];
Expand Down Expand Up @@ -139,6 +141,7 @@ public static void GTMetaTileRegister() {
}
Loaders.Generator_Diesel[0] = new DieselGenerator(1113, "basicgenerator.diesel.tier.04", "Turbo Supercharging Combustion Generator", 4).getStackForm(1L);
Loaders.Generator_Diesel[1] = new DieselGenerator(1114, "basicgenerator.diesel.tier.05", "Ultimate Chemical Energy Releaser", 5).getStackForm(1L);
Loaders.CT = new CoolantTower(IDOffset + 24, "CoolantTower", "Coolant Tower").getStackForm(1L);
CrackRecipeAdder.registerPipe(30995, MyMaterial.incoloy903, 15000, 8000, true);
CrackRecipeAdder.registerWire(32749, MyMaterial.signalium, 12, 131072, 16, true);
CrackRecipeAdder.registerWire(32737, MyMaterial.lumiium, 8, 524288, 64, true);
Expand Down Expand Up @@ -232,6 +235,7 @@ public static void addTexturePage() {
Textures.BlockIcons.casingTexturePages[GoodGeneratorTexturePage][3] = TextureFactory.of(preciseUnitCasing, 0);
Textures.BlockIcons.casingTexturePages[GoodGeneratorTexturePage][4] = TextureFactory.of(preciseUnitCasing, 1);
Textures.BlockIcons.casingTexturePages[GoodGeneratorTexturePage][5] = TextureFactory.of(preciseUnitCasing, 2);
Textures.BlockIcons.casingTexturePages[GoodGeneratorTexturePage][6] = TextureFactory.of(GregTech_API.sBlockConcretes, 8);
}
}

Expand Down
36 changes: 30 additions & 6 deletions src/main/java/goodgenerator/loader/RecipeLoader_02.java
Original file line number Diff line number Diff line change
Expand Up @@ -975,7 +975,7 @@ public static void RecipeLoad(){
MyMaterial.marCeM200.get(OrePrefixes.ingotHot, 19),
null,
5700,
1920,
122880,
4500
);

Expand Down Expand Up @@ -1468,6 +1468,18 @@ public static void RecipeLoad(){
120
);

GT_Values.RA.addAssemblerRecipe(
new ItemStack[]{
GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Plastic, 2),
GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Steel, 1),
GT_Utility.getIntegratedCircuit(1)
},
Materials.Concrete.getMolten(2304),
ItemRefer.Coolant_Tower.get(1),
200,
120
);

}

public static void InitLoadRecipe() {
Expand Down Expand Up @@ -1684,9 +1696,21 @@ public static void FinishLoadRecipe() {
if (tPlasma == null) {
continue;
}
tPlasma.amount = 100;
String tPlasmaName = FluidRegistry.getFluidName(tPlasma);
int tUnit = plasmaFuel.mSpecialValue;
if (tUnit > 200_000) {
tPlasma.amount = 1500;
} else if (tUnit > 100_000) {
tPlasma.amount = 1000;
} else if (tUnit > 50_000) {
tPlasma.amount = 800;
} else if (tUnit > 10_000) {
tPlasma.amount = 500;
} else {
tPlasma.amount = 100;
}

String tPlasmaName = FluidRegistry.getFluidName(tPlasma);

if (tPlasmaName.split("\\.", 2).length == 2) {
String tOutName = tPlasmaName.split("\\.", 2)[1];
FluidStack output = FluidRegistry.getFluidStack(tOutName, tPlasma.amount);
Expand All @@ -1696,9 +1720,9 @@ public static void FinishLoadRecipe() {
MyRecipeAdder.instance.addExtremeHeatExchangerRecipe(
tPlasma,
output,
FluidRegistry.getFluidStack("ic2distilledwater", tUnit * 300 / 160),
FluidRegistry.getFluidStack("ic2superheatedsteam", tUnit * 300),
FluidRegistry.getFluidStack("supercriticalsteam", tUnit * 3),
FluidRegistry.getFluidStack("ic2distilledwater", tUnit * 3 * tPlasma.amount / 160),
FluidRegistry.getFluidStack("ic2superheatedsteam", tUnit * 3 * tPlasma.amount),
FluidRegistry.getFluidStack("supercriticalsteam", tUnit * 3 * tPlasma.amount / 100),
1
);
}
Expand Down
1 change: 1 addition & 0 deletions src/main/java/goodgenerator/util/ItemRefer.java
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ public final class ItemRefer {
public static ItemRefer Compact_Fusion_MK4 = getItemStack(LFC[3]);
public static ItemRefer Compact_Fusion_MK5 = getItemStack(LFC[4]);
public static ItemRefer Large_Essentia_Smeltery = getItemStack(LES);
public static ItemRefer Coolant_Tower = getItemStack(CT);

private Item mItem = null;
private Block mBlock = null;
Expand Down
8 changes: 5 additions & 3 deletions src/main/resources/assets/goodgenerator/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -278,9 +278,8 @@ value.neutron_activator.0=Minimum Neutron Kinetic Energy:
value.neutron_activator.1=Maximum Neutron Kinetic Energy:
value.neutron_activator.2= MeV
value.extreme_heat_exchanger.0=Max Hot Fluid Input:
value.extreme_heat_exchanger.1=Max Distilled Water Input:
value.extreme_heat_exchanger.2=Max Heated Fluid Output:
value.extreme_heat_exchanger.3=Max Overheated Fluid Output:
value.extreme_heat_exchanger.1=Max Distilled Water Input(Normal):
value.extreme_heat_exchanger.2=Max Distilled Water Input(OverHeated):
value.extreme_heat_exchanger.4=Threshold:
value.precise_assembler.0=Need MK-
value.precise_assembler.1= Casing
Expand Down Expand Up @@ -399,6 +398,9 @@ LargeEssentiaSmeltery.hint.4=0 - Air
LargeEssentiaSmeltery.hint.5=1 - Basic Hatch/Magic Casing
LargeEssentiaSmeltery.hint.6=2 - Muffler Hatch
LargeEssentiaSmeltery.hint.7=Support TecTech Hatches.
CoolantTower.hint.0=Any kind of GT concrete
CoolantTower.hint.1=28x Tungstencarbide Frame Boxes
CoolantTower.hint.2=1 - Input/Output Hatch

#Chat
largeessentiagenerator.chat= Installed!
Expand Down

0 comments on commit 36301fe

Please sign in to comment.