aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlodBlock <1356392126@qq.com>2022-01-25 22:46:39 +0800
committerGlodBlock <1356392126@qq.com>2022-01-25 22:46:39 +0800
commit6d9d41e1077332ad68e9812d485d6e049158178a (patch)
treecaaab13088ce4fea3166f8980a4dfef84101e034
parenteb059d2ca1cc65229857df6b2876bdfbc849b3c1 (diff)
downloadGT5-Unofficial-6d9d41e1077332ad68e9812d485d6e049158178a.tar.gz
GT5-Unofficial-6d9d41e1077332ad68e9812d485d6e049158178a.tar.bz2
GT5-Unofficial-6d9d41e1077332ad68e9812d485d6e049158178a.zip
finish SC turbine
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java94
-rw-r--r--src/main/java/goodgenerator/loader/Loaders.java2
-rw-r--r--src/main/java/goodgenerator/loader/RecipeLoader_02.java6
3 files changed, 95 insertions, 7 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java b/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java
index f2f63f5e01..78a26ff740 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java
@@ -8,14 +8,22 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
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.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import java.util.ArrayList;
public class SupercriticalFluidTurbine extends GT_MetaTileEntity_LargeTurbineBase {
+ private boolean looseFit = false;
+
private static final IIconContainer turbineOn = new Textures.BlockIcons.CustomIcon("icons/turbines/TURBINE_05");
private static final IIconContainer turbineOff = new Textures.BlockIcons.CustomIcon("icons/turbines/TURBINE_15");
private static final IIconContainer turbineEmpty = new Textures.BlockIcons.CustomIcon("icons/turbines/TURBINE_25");
@@ -30,7 +38,82 @@ public class SupercriticalFluidTurbine extends GT_MetaTileEntity_LargeTurbineBas
@Override
public int fluidIntoPower(ArrayList<FluidStack> aFluids, int aOptFlow, int aBaseEff) {
- return 0;
+ if (looseFit) {
+ aOptFlow *= 4;
+ double pow = Math.pow(1.1f, ((aBaseEff - 7500) / 10000F) * 20f);
+ if (aBaseEff > 10000) {
+ aOptFlow *= pow;
+ aBaseEff = 7500;
+ } else if (aBaseEff > 7500) {
+ aOptFlow *= pow;
+ aBaseEff *= 0.75f;
+ } else {
+ aBaseEff *= 0.75f;
+ }
+ }
+ int tEU = 0;
+ int totalFlow = 0; // Byproducts are based on actual flow
+ int flow = 0;
+ int remainingFlow = GT_Utility.safeInt((long) (aOptFlow * 1.25f)); // Allowed to use up to 125% of optimal flow. Variable required outside of loop for multi-hatch scenarios.
+ this.realOptFlow = aOptFlow;
+
+ storedFluid = 0;
+ FluidStack tSCSteam = FluidRegistry.getFluidStack("supercriticalsteam", 1);
+ for (int i = 0; i < aFluids.size() && remainingFlow > 0; i++) {
+ final FluidStack aFluidStack = aFluids.get(i);
+ if (tSCSteam.isFluidEqual(aFluidStack)) {
+ flow = Math.min(aFluidStack.amount, remainingFlow);
+ depleteInput(new FluidStack(aFluidStack, flow));
+ this.storedFluid += aFluidStack.amount;
+ remainingFlow -= flow;
+ totalFlow += flow;
+ } else if (GT_ModHandler.isAnySteam(aFluidStack)) {
+ depleteInput(new FluidStack(aFluidStack, aFluidStack.amount));
+ }
+ }
+ if (totalFlow <= 0) return 0;
+ tEU = totalFlow;
+ addOutput(GT_ModHandler.getSteam(totalFlow));
+ if (totalFlow == aOptFlow) {
+ tEU = GT_Utility.safeInt((long) tEU * (long) aBaseEff / 100L);
+ } else {
+ float efficiency = 1.0f - Math.abs((totalFlow - aOptFlow) / (float) aOptFlow);
+ tEU *= efficiency;
+ tEU = Math.max(1, GT_Utility.safeInt((long) tEU * (long) aBaseEff / 10000L));
+ }
+
+ return tEU;
+ }
+
+ @Override
+ public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ if (aSide == getBaseMetaTileEntity().getFrontFacing()) {
+ looseFit ^= true;
+ GT_Utility.sendChatToPlayer(aPlayer, looseFit ? trans("500", "Fitting: Loose - More Flow") : trans("501", "Fitting: Tight - More Efficiency"));
+ }
+ }
+
+ @Override
+ public int getDamageToComponent(ItemStack aStack) {
+ return looseFit ? 0 : 10;
+ }
+
+ @Override
+ public String[] getInfoData() {
+ super.looseFit = looseFit;
+ return super.getInfoData();
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setBoolean("turbineFitting", looseFit);
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ looseFit = aNBT.getBoolean("turbineFitting");
}
@Override
@@ -51,10 +134,15 @@ public class SupercriticalFluidTurbine extends GT_MetaTileEntity_LargeTurbineBas
@Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
- tt.addMachineType("Supercritical Fluid Turbine")
+ tt.addMachineType("Supercritical Steam Turbine")
.addInfo("Controller block for Supercritical Fluid Turbine")
.addInfo("Needs a Turbine, place inside controller")
- .addInfo("The Supercritical Fluid's temperature gives extra efficiency.")
+ .addInfo("Use Supercritical Steam to generate power.")
+ .addInfo("Outputs Steam as well as producing power")
+ .addInfo("1L Supercritical Steam = 100 EU")
+ .addInfo("Extreme Heated Steam will cause more damage to the turbine.")
+ .addInfo("Power output depends on turbine and fitting")
+ .addInfo("Use screwdriver to adjust fitting of turbine")
.addSeparator()
.beginStructureBlock(3, 3, 4, true)
.addController("Front center")
diff --git a/src/main/java/goodgenerator/loader/Loaders.java b/src/main/java/goodgenerator/loader/Loaders.java
index 228bd2d5c2..92ea70a554 100644
--- a/src/main/java/goodgenerator/loader/Loaders.java
+++ b/src/main/java/goodgenerator/loader/Loaders.java
@@ -112,7 +112,7 @@ public class Loaders {
Loaders.NA = new NeutronActivator(IDOffset + 12, "NeutronActivator", "Neutron Activator").getStackForm(1L);
Loaders.YFT = new YottaFluidTank(IDOffset + 13, "YottaFluidTank", "YOTTank").getStackForm(1L);
Loaders.YFH = new YOTTAHatch(IDOffset + 14, "YottaFluidTankHatch", "YOTHatch", 5).getStackForm(1L);
- Loaders.SCTurbine = new SupercriticalFluidTurbine(IDOffset + 15, "SupercriticalFluidTurbine", "SC Fluid Turbine").getStackForm(1L);
+ Loaders.SCTurbine = new SupercriticalFluidTurbine(IDOffset + 15, "SupercriticalSteamTurbine", "SC Steam Turbine").getStackForm(1L);
Loaders.XHE = new ExtremeHeatExchanger(IDOffset + 16, "ExtremeHeatExchanger", "Extreme Heat Exchanger").getStackForm(1L);
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);
diff --git a/src/main/java/goodgenerator/loader/RecipeLoader_02.java b/src/main/java/goodgenerator/loader/RecipeLoader_02.java
index 1f00fce0e3..3a46f5ee69 100644
--- a/src/main/java/goodgenerator/loader/RecipeLoader_02.java
+++ b/src/main/java/goodgenerator/loader/RecipeLoader_02.java
@@ -1088,9 +1088,9 @@ public class RecipeLoader_02 {
MyRecipeAdder.instance.addExtremeHeatExchangerRecipe(
tPlasma,
output,
- FluidRegistry.getFluidStack("ic2distilledwater", tUnit * 100),
- FluidRegistry.getFluidStack("ic2superheatedsteam", tUnit * 100),
- FluidRegistry.getFluidStack("supercriticalsteam", tUnit),
+ FluidRegistry.getFluidStack("ic2distilledwater", tUnit * 300),
+ FluidRegistry.getFluidStack("ic2superheatedsteam", tUnit * 300),
+ FluidRegistry.getFluidStack("supercriticalsteam", tUnit * 3),
1
);
}