heatable fluid trait, steam compression headaches

This commit is contained in:
Boblet 2022-10-05 16:29:25 +02:00
parent 3ef8533142
commit ab083eec59
2 changed files with 79 additions and 0 deletions

View File

@ -8,6 +8,7 @@ import com.hbm.inventory.fluid.FluidType.ExtContainer;
import com.hbm.inventory.fluid.trait.*;
import com.hbm.inventory.fluid.trait.FluidTraitSimple.*;
import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade;
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType;
import com.hbm.render.util.EnumSymbol;
public class Fluids {
@ -300,6 +301,11 @@ public class Fluids {
metaOrder.add(PLASMA_XM);
metaOrder.add(PLASMA_BF);
WATER.addTraits(new FT_Heatable().setEff(HeatingType.BOILER, 1.0D).setEff(HeatingType.HEATEXCHANGER, 0.25D)
.addStep(20, 1, Fluids.STEAM, 100)
.addStep(220, 1, Fluids.HOTSTEAM, 10)
.addStep(220, 1, Fluids.SUPERHOTSTEAM, 1));
if(idMapping.size() != metaOrder.size()) {
throw new IllegalStateException("A severe error has occoured during NTM's fluid registering process! The MetaOrder and Mappings are inconsistent! Mapping size: " + idMapping.size()+ " / MetaOrder size: " + metaOrder.size());
}

View File

@ -0,0 +1,73 @@
package com.hbm.inventory.fluid.trait;
import com.hbm.inventory.fluid.FluidType;
import net.minecraft.util.EnumChatFormatting;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class FT_Heatable extends FluidTrait {
protected List<HeatingStep> steps = new ArrayList();
protected HashMap<HeatingType, Double> efficiency = new HashMap();
/** Add in ascending order, lowest heat required goes first! */
public FT_Heatable addStep(int heat, int req, FluidType type, int prod) {
steps.add(new HeatingStep(req, heat, type, prod));
return this;
}
/** sets efficiency for different types of heating, main difference is with water */
public FT_Heatable setEff(HeatingType type, double eff) {
efficiency.put(type, eff);
return this;
}
public double getEfficiency(HeatingType type) {
Double eff = this.efficiency.get(type);
return eff != null ? eff : 0.0D;
}
public HeatingStep getFirstStep() {
return this.steps.get(0);
}
public void addInfoHidden(List<String> info) {
for(HeatingType type : HeatingType.values()) {
double eff = getEfficiency(type);
if(eff > 0) {
info.add(EnumChatFormatting.AQUA + "[" + type.name + "]");
info.add(EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%");
}
}
}
public static class HeatingStep {
public final int amountReq;
public final int heatReq;
public final FluidType typeProduced;
public final int amountProduced;
public HeatingStep(int req, int heat, FluidType type, int prod) {
this.amountReq = req;
this.heatReq = heat;
this.typeProduced = type;
this.amountProduced = prod;
}
}
public static enum HeatingType {
BOILER("Boilable"),
HEATEXCHANGER("Heatable");
public String name;
private HeatingType(String name) {
this.name = name;
}
}
}