mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge pull request #1767 from FOlkvangrField/Custom-fluid-pollution-fix
Custom fluid traits fix
This commit is contained in:
commit
78d61348bf
@ -1,7 +1,9 @@
|
||||
package com.hbm.commands;
|
||||
|
||||
import com.hbm.config.ItemPoolConfigJSON;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.ChatBuilder;
|
||||
import com.hbm.util.DamageResistanceHandler;
|
||||
|
||||
@ -10,6 +12,10 @@ import net.minecraft.command.ICommandSender;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
||||
|
||||
public class CommandReloadRecipes extends CommandBase {
|
||||
|
||||
@Override
|
||||
@ -28,6 +34,8 @@ public class CommandReloadRecipes extends CommandBase {
|
||||
SerializableRecipe.initialize();
|
||||
ItemPoolConfigJSON.initialize();
|
||||
DamageResistanceHandler.init();
|
||||
Fluids.reloadFluids();
|
||||
|
||||
sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reload complete :)"));
|
||||
} catch(Exception ex) {
|
||||
sender.addChatMessage(ChatBuilder.start("----------------------------------").color(EnumChatFormatting.GRAY).flush());
|
||||
|
||||
@ -20,27 +20,28 @@ public class BoilingHandler extends NEIUniversalHandler {
|
||||
public String getKey() {
|
||||
return "ntmBoiling";
|
||||
}
|
||||
|
||||
|
||||
public static HashMap<Object, Object> cache;
|
||||
|
||||
public static boolean isReload=false;
|
||||
|
||||
public static HashMap<Object, Object> generateRecipes() {
|
||||
|
||||
if(cache != null) return cache;
|
||||
|
||||
|
||||
if(cache != null && !isReload) return cache;
|
||||
|
||||
cache = new HashMap();
|
||||
|
||||
|
||||
for(FluidType type : Fluids.getInNiceOrder()) {
|
||||
|
||||
|
||||
if(type.hasTrait(FT_Heatable.class)) {
|
||||
FT_Heatable trait = type.getTrait(FT_Heatable.class);
|
||||
|
||||
|
||||
if(trait.getEfficiency(HeatingType.BOILER) > 0) {
|
||||
HeatingStep step = trait.getFirstStep();
|
||||
cache.put(ItemFluidIcon.make(type, step.amountReq), ItemFluidIcon.make(step.typeProduced, step.amountProduced));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
isReload=false;
|
||||
return cache;
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.handler.nei.BoilingHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.fluid.trait.*;
|
||||
@ -179,12 +180,12 @@ public class Fluids {
|
||||
public static FluidType STELLAR_FLUX;
|
||||
public static FluidType VITRIOL;
|
||||
public static FluidType SLOP;
|
||||
|
||||
|
||||
/* Lagacy names for compatibility purposes */
|
||||
@Deprecated public static FluidType ACID; //JAOPCA uses this, apparently
|
||||
|
||||
|
||||
public static final HashBiMap<String, FluidType> renameMapping = HashBiMap.create();
|
||||
|
||||
|
||||
public static List<FluidType> customFluids = new ArrayList();
|
||||
|
||||
private static final HashMap<Integer, FluidType> idMapping = new HashMap();
|
||||
@ -226,20 +227,20 @@ public class Fluids {
|
||||
public static final FT_Polluting P_LIQUID_GAS = new FT_Polluting().burn(PollutionType.SOOT, SOOT_GAS * 2F);
|
||||
|
||||
public static void init() {
|
||||
|
||||
|
||||
// ##### ##### ##### ##### ## # ##### # # ##### ## # #####
|
||||
// # # # # # ## # # # # # # ## # #
|
||||
// ##### # # ### # # # ##### ##### # # # # # ###
|
||||
// # # # # # # ## # # # # # # ## #
|
||||
// # # # # ##### # ## ##### # # ##### # ## #####
|
||||
|
||||
|
||||
/*
|
||||
* The mapping ID is set in the CTOR, which is the static, never shifting ID that is used to save the fluid type.
|
||||
* Therefore, ALWAYS append new fluid entries AT THE BOTTOM to avoid unnecessary ID shifting.
|
||||
* In addition, you have to add your fluid to 'metaOrder' which is what is used to sort fluid identifiers and whatnot in the inventory.
|
||||
* You may screw with metaOrder as much as you like, as long as you keep all fluids in the list exactly once.
|
||||
*/
|
||||
|
||||
|
||||
NONE = new FluidType("NONE", 0x888888, 0, 0, 0, EnumSymbol.NONE);
|
||||
WATER = new FluidType("WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, UNSIPHONABLE);
|
||||
STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).addTraits(GASEOUS, UNSIPHONABLE);
|
||||
@ -384,18 +385,18 @@ public class Fluids {
|
||||
SLOP = new FluidType("SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
|
||||
LEAD = new FluidType("LEAD", 0x666672, 4, 0, 0, EnumSymbol.NONE).setTemp(350).addTraits(LIQUID, VISCOUS);
|
||||
LEAD_HOT = new FluidType(143, "LEAD_HOT", 0x776563, 4, 0, 0, EnumSymbol.NONE).setTemp(1500).addTraits(LIQUID, VISCOUS);
|
||||
|
||||
|
||||
// ^ ^ ^ ^ ^ ^ ^ ^
|
||||
//ADD NEW FLUIDS HERE
|
||||
|
||||
|
||||
File folder = MainRegistry.configHbmDir;
|
||||
File customTypes = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTypes.json");
|
||||
if(!customTypes.exists()) initDefaultFluids(customTypes);
|
||||
readCustomFluids(customTypes);
|
||||
|
||||
|
||||
//AND DON'T FORGET THE META DOWN HERE
|
||||
// V V V V V V V V
|
||||
|
||||
|
||||
//null
|
||||
metaOrder.add(NONE);
|
||||
//vanilla
|
||||
@ -556,15 +557,15 @@ public class Fluids {
|
||||
//bug meth
|
||||
metaOrder.add(PHEROMONE);
|
||||
metaOrder.add(PHEROMONE_M);
|
||||
|
||||
|
||||
//ANY INTERNAL RENAMING MUST BE REFLECTED HERE - DON'T FORGET TO CHANGE: LANG FILES + TYPE'S STRING ID + NAME OF TANK/GUI TEXTURE FILES!
|
||||
// V
|
||||
|
||||
|
||||
renameMapping.put("ACID", PEROXIDE);
|
||||
|
||||
|
||||
// LEGACY
|
||||
ACID = PEROXIDE;
|
||||
|
||||
|
||||
for(FluidType custom : customFluids) metaOrder.add(custom);
|
||||
|
||||
CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_LUNG, false)));
|
||||
@ -576,7 +577,7 @@ public class Fluids {
|
||||
|
||||
double eff_steam_boil = 1.0D;
|
||||
double eff_steam_heatex = 0.25D;
|
||||
|
||||
|
||||
WATER.addTraits(new FT_Heatable().setEff(HeatingType.BOILER, eff_steam_boil).setEff(HeatingType.HEATEXCHANGER, eff_steam_heatex)
|
||||
.addStep(200, 1, STEAM, 100)
|
||||
.addStep(220, 1, HOTSTEAM, 10)
|
||||
@ -606,13 +607,13 @@ public class Fluids {
|
||||
|
||||
COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).setEff(HeatingType.ICF, 1.0D).addStep(300, 1, COOLANT_HOT, 1));
|
||||
COOLANT_HOT.addTraits(new FT_Coolable(COOLANT, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||
|
||||
|
||||
MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).setEff(HeatingType.ICF, 1.25D).addStep(400, 1, MUG_HOT, 1), new FT_PWRModerator(1.15D));
|
||||
MUG_HOT.addTraits(new FT_Coolable(MUG, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||
|
||||
|
||||
BLOOD.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.ICF, 1.25D).addStep(500, 1, BLOOD_HOT, 1));
|
||||
BLOOD_HOT.addTraits(new FT_Coolable(BLOOD, 1, 1, 500).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||
|
||||
|
||||
HEAVYWATER.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(300, 1, HEAVYWATER_HOT, 1), new FT_PWRModerator(1.25D));
|
||||
HEAVYWATER_HOT.addTraits(new FT_Coolable(HEAVYWATER, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||
|
||||
@ -623,17 +624,17 @@ public class Fluids {
|
||||
/* Or maybe not, because I blocked your sorry ass. Guess why that is? */
|
||||
LEAD_HOT.addTraits(new FT_Coolable(LEAD, 1, 1, 680).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||
/* Maybe shittalking me in some corner where you thought I wouldn't listen was not that bright of an idea afterall? */
|
||||
|
||||
|
||||
THORIUM_SALT.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(400, 1, THORIUM_SALT_HOT, 1), new FT_PWRModerator(2.5D));
|
||||
THORIUM_SALT_HOT.addTraits(new FT_Coolable(THORIUM_SALT_DEPLETED, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// FINAL ///
|
||||
|
||||
|
||||
long baseline = 100_000L; //we do not know
|
||||
double demandVeryLow = 0.5D; //for waste gasses
|
||||
double demandLow = 1.0D; //for fuel oils
|
||||
@ -695,11 +696,11 @@ public class Fluids {
|
||||
registerCalculatedFuel(DIESEL_CRACK_REFORM, DIESEL_CRACK.getTrait(FT_Flammable.class).getHeatEnergy() * complexityReform, 2.5D, FuelGrade.HIGH);
|
||||
registerCalculatedFuel(KEROSENE_REFORM, KEROSENE.getTrait(FT_Flammable.class).getHeatEnergy() * complexityReform, 1.5D, FuelGrade.AERO);
|
||||
registerCalculatedFuel(REFORMGAS, (baseline / 0.06 * flammabilityHigh * demandLow * complexityVacuum * complexityFraction), 1.5D, FuelGrade.GAS);
|
||||
|
||||
|
||||
//all hail the spreadsheet
|
||||
//the spreadsheet must not be questioned
|
||||
//none may enter the orb- i mean the spreadsheet
|
||||
|
||||
|
||||
int coalHeat = 400_000; // 200TU/t for 2000 ticks
|
||||
registerCalculatedFuel(COALOIL, (coalHeat * (1000 /* bucket */ / 100 /* mB per coal */) * flammabilityLow * demandLow * complexityChemplant), 0, null);
|
||||
long coaloil = COALOIL.getTrait(FT_Flammable.class).getHeatEnergy();
|
||||
@ -721,24 +722,24 @@ public class Fluids {
|
||||
|
||||
registerCalculatedFuel(SYNGAS, (coalHeat * (1000 /* bucket */ / 100 /* mB per coal */) * flammabilityLow * demandLow * complexityChemplant) * 1.5, 1.25, FuelGrade.GAS); //same as coal oil, +50% bonus
|
||||
registerCalculatedFuel(OXYHYDROGEN, 5_000, 3, FuelGrade.GAS); // whatever
|
||||
|
||||
|
||||
File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTraits.json");
|
||||
File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmFluidTraits.json");
|
||||
|
||||
|
||||
if(!config.exists()) {
|
||||
writeDefaultTraits(template);
|
||||
} else {
|
||||
readTraits(config);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void initDefaultFluids(File file) {
|
||||
|
||||
|
||||
try {
|
||||
JsonWriter writer = new JsonWriter(new FileWriter(file));
|
||||
writer.setIndent(" ");
|
||||
writer.beginObject();
|
||||
|
||||
|
||||
writer.name("CUSTOM_DEMO").beginObject();
|
||||
writer.name("name").value("Custom Fluid Demo");
|
||||
writer.name("id").value(1000);
|
||||
@ -749,21 +750,21 @@ public class Fluids {
|
||||
writer.name("texture").value("custom_water");
|
||||
writer.name("temperature").value(20);
|
||||
writer.endObject();
|
||||
|
||||
|
||||
writer.endObject();
|
||||
writer.close();
|
||||
} catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void readCustomFluids(File file) {
|
||||
|
||||
|
||||
try {
|
||||
JsonObject json = gson.fromJson(new FileReader(file), JsonObject.class);
|
||||
|
||||
|
||||
for(Entry<String, JsonElement> entry : json.entrySet()) {
|
||||
|
||||
|
||||
JsonObject obj = (JsonObject) entry.getValue();
|
||||
|
||||
String name = entry.getKey();
|
||||
@ -777,54 +778,54 @@ public class Fluids {
|
||||
EnumSymbol symbol = EnumSymbol.valueOf(obj.get("symbol").getAsString());
|
||||
String texture = obj.get("texture").getAsString();
|
||||
int temperature = obj.get("temperature").getAsInt();
|
||||
|
||||
|
||||
FluidType type = new FluidType(name, color, p, f, r, symbol, texture, tint, id, displayName).setTemp(temperature);
|
||||
customFluids.add(type);
|
||||
}
|
||||
|
||||
|
||||
} catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void writeDefaultTraits(File file) {
|
||||
|
||||
try {
|
||||
JsonWriter writer = new JsonWriter(new FileWriter(file));
|
||||
writer.setIndent(" ");
|
||||
writer.beginObject();
|
||||
|
||||
|
||||
for(FluidType type : metaOrder) {
|
||||
writer.name(type.getName()).beginObject();
|
||||
|
||||
|
||||
for(Entry<Class<? extends FluidTrait>, FluidTrait> entry : type.traits.entrySet()) {
|
||||
writer.name(FluidTrait.traitNameMap.inverse().get(entry.getKey())).beginObject();
|
||||
entry.getValue().serializeJSON(writer);
|
||||
writer.endObject();
|
||||
}
|
||||
|
||||
|
||||
writer.endObject();
|
||||
}
|
||||
|
||||
|
||||
writer.endObject();
|
||||
writer.close();
|
||||
} catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void readTraits(File config) {
|
||||
|
||||
|
||||
try {
|
||||
JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class);
|
||||
|
||||
|
||||
for(FluidType type : metaOrder) {
|
||||
|
||||
|
||||
JsonElement element = json.get(type.getName());
|
||||
if(element != null) {
|
||||
type.traits.clear();
|
||||
JsonObject obj = element.getAsJsonObject();
|
||||
|
||||
|
||||
for(Entry<String, JsonElement> entry : obj.entrySet()) {
|
||||
Class<? extends FluidTrait> traitClass = FluidTrait.traitNameMap.get(entry.getKey());
|
||||
try {
|
||||
@ -837,14 +838,36 @@ public class Fluids {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void reloadFluids(){
|
||||
File folder = MainRegistry.configHbmDir;
|
||||
File customTypes = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTypes.json");
|
||||
if(!customTypes.exists()) initDefaultFluids(customTypes);
|
||||
for(FluidType type : customFluids){
|
||||
idMapping.remove(type.getID());
|
||||
registerOrder.remove(type);
|
||||
nameMapping.remove(type.getName());
|
||||
metaOrder.remove(type);
|
||||
}
|
||||
customFluids.clear();
|
||||
readCustomFluids(customTypes);
|
||||
for(FluidType custom : customFluids) metaOrder.add(custom);
|
||||
File config = new File(MainRegistry.configHbmDir.getAbsolutePath() + File.separatorChar + "hbmFluidTraits.json");
|
||||
File template = new File(MainRegistry.configHbmDir.getAbsolutePath() + File.separatorChar + "_hbmFluidTraits.json");
|
||||
|
||||
if(!config.exists()) {
|
||||
writeDefaultTraits(template);
|
||||
} else {
|
||||
readTraits(config);
|
||||
}
|
||||
BoilingHandler.isReload=true;
|
||||
}
|
||||
private static void registerCalculatedFuel(FluidType type, double base, double combustMult, FuelGrade grade) {
|
||||
|
||||
|
||||
long flammable = (long) base;
|
||||
long combustible = (long) (base * combustMult);
|
||||
|
||||
@ -852,11 +875,11 @@ public class Fluids {
|
||||
combustible = round(combustible);
|
||||
|
||||
type.addTraits(new FT_Flammable(flammable));
|
||||
|
||||
|
||||
if(combustible > 0 && grade != null)
|
||||
type.addTraits(new FT_Combustible(grade, combustible));
|
||||
}
|
||||
|
||||
|
||||
/** ugly but it does the thing well enough */
|
||||
private static long round(long l) {
|
||||
if(l > 10_000_000L) return l - (l % 100_000L);
|
||||
@ -864,10 +887,10 @@ public class Fluids {
|
||||
if(l > 100_000L) return l - (l % 1_000L);
|
||||
if(l > 10_000L) return l - (l % 100L);
|
||||
if(l > 1_000L) return l - (l % 10L);
|
||||
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
protected static int registerSelf(FluidType fluid) {
|
||||
int id = idMapping.size();
|
||||
idMapping.put(id, fluid);
|
||||
@ -875,90 +898,90 @@ public class Fluids {
|
||||
nameMapping.put(fluid.getName(), fluid);
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
protected static void register(FluidType fluid, int id) {
|
||||
idMapping.put(id, fluid);
|
||||
registerOrder.add(fluid);
|
||||
nameMapping.put(fluid.getName(), fluid);
|
||||
}
|
||||
|
||||
|
||||
public static FluidType fromID(int id) {
|
||||
FluidType fluid = idMapping.get(id);
|
||||
|
||||
|
||||
if(fluid == null)
|
||||
fluid = Fluids.NONE;
|
||||
|
||||
|
||||
return fluid;
|
||||
}
|
||||
|
||||
|
||||
public static FluidType fromName(String name) {
|
||||
FluidType fluid = nameMapping.get(name);
|
||||
|
||||
|
||||
if(fluid == null)
|
||||
fluid = Fluids.NONE;
|
||||
|
||||
|
||||
return fluid;
|
||||
}
|
||||
|
||||
|
||||
/** for old worlds with types saved as name, do not use otherwise */
|
||||
public static FluidType fromNameCompat(String name) {
|
||||
if(renameMapping.containsKey(name)) {
|
||||
FluidType fluid = renameMapping.get(name);
|
||||
|
||||
|
||||
if(fluid == null) //null safety never killed nobody
|
||||
fluid = Fluids.NONE;
|
||||
|
||||
|
||||
return fluid;
|
||||
}
|
||||
|
||||
|
||||
return fromName(name);
|
||||
}
|
||||
|
||||
|
||||
/** basically the inverse of the above method */
|
||||
public static String toNameCompat(FluidType type) {
|
||||
if(renameMapping.containsValue(type)) {
|
||||
String name = renameMapping.inverse().get(type);
|
||||
|
||||
|
||||
if(name == null) //ditto
|
||||
name = Fluids.NONE.getName();
|
||||
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
return type.getName();
|
||||
}
|
||||
|
||||
|
||||
public static FluidType[] getAll() {
|
||||
return getInOrder(false);
|
||||
}
|
||||
|
||||
|
||||
public static FluidType[] getInNiceOrder() {
|
||||
return getInOrder(true);
|
||||
}
|
||||
|
||||
|
||||
private static FluidType[] getInOrder(final boolean nice) {
|
||||
FluidType[] all = new FluidType[idMapping.size()];
|
||||
|
||||
|
||||
for(int i = 0; i < all.length; i++) {
|
||||
FluidType type = nice ? metaOrder.get(i) : registerOrder.get(i);
|
||||
|
||||
|
||||
if(type == null) {
|
||||
throw new IllegalStateException("A severe error has occoured with NTM's fluid system! Fluid of the ID " + i + " has returned NULL in the registry!");
|
||||
}
|
||||
|
||||
|
||||
all[i] = type;
|
||||
}
|
||||
|
||||
|
||||
return all;
|
||||
}
|
||||
|
||||
|
||||
public static class CD_Canister {
|
||||
public int color;
|
||||
public CD_Canister(int color) { this.color = color; }
|
||||
}
|
||||
|
||||
|
||||
public static class CD_Gastank {
|
||||
public int bottleColor, labelColor;
|
||||
public CD_Gastank(int color1, int color2) { this.bottleColor = color1; this.labelColor = color2; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,15 +11,15 @@ import net.minecraft.util.EnumChatFormatting;
|
||||
public class FT_PWRModerator extends FluidTrait {
|
||||
|
||||
private double multiplier;
|
||||
|
||||
public FT_PWRModerator(){}
|
||||
public FT_PWRModerator(double mulitplier) {
|
||||
this.multiplier = mulitplier;
|
||||
}
|
||||
|
||||
|
||||
public double getMultiplier() {
|
||||
return multiplier;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addInfo(List<String> info) {
|
||||
info.add(EnumChatFormatting.BLUE + "[PWR Flux Multiplier]");
|
||||
@ -35,7 +35,7 @@ public class FT_PWRModerator extends FluidTrait {
|
||||
public void serializeJSON(JsonWriter writer) throws IOException {
|
||||
writer.name("multiplier").value(multiplier);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deserializeJSON(JsonObject obj) {
|
||||
this.multiplier = obj.get("multiplier").getAsDouble();
|
||||
|
||||
@ -11,6 +11,7 @@ import java.util.List;
|
||||
public class FT_Pheromone extends FluidTrait{
|
||||
|
||||
public int type;
|
||||
public FT_Pheromone() {}
|
||||
|
||||
public FT_Pheromone(int type) {
|
||||
this.type = type;
|
||||
|
||||
@ -20,12 +20,12 @@ public class FT_Polluting extends FluidTrait {
|
||||
//original draft had both of them inside a hashmap for the release type but honestly handling hash maps in hash maps adds more complexity than it removes
|
||||
public HashMap<PollutionType, Float> releaseMap = new HashMap();
|
||||
public HashMap<PollutionType, Float> burnMap = new HashMap();
|
||||
|
||||
|
||||
public FT_Polluting release(PollutionType type, float amount) {
|
||||
releaseMap.put(type, amount);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public FT_Polluting burn(PollutionType type, float amount) {
|
||||
burnMap.put(type, amount);
|
||||
return this;
|
||||
@ -38,12 +38,12 @@ public class FT_Polluting extends FluidTrait {
|
||||
|
||||
@Override
|
||||
public void addInfoHidden(List<String> info) {
|
||||
|
||||
|
||||
if(!this.releaseMap.isEmpty()) {
|
||||
info.add(EnumChatFormatting.GREEN + "When spilled:");
|
||||
for(Entry<PollutionType, Float> entry : releaseMap.entrySet()) info.add(EnumChatFormatting.GREEN + " - " + entry.getValue() + " " + entry.getKey() + " per mB");
|
||||
}
|
||||
|
||||
|
||||
if(!this.burnMap.isEmpty()) {
|
||||
info.add(EnumChatFormatting.RED + "When burned:");
|
||||
for(Entry<PollutionType, Float> entry : burnMap.entrySet()) info.add(EnumChatFormatting.RED + " - " + entry.getValue() + " " + entry.getKey() + " per mB");
|
||||
@ -69,7 +69,7 @@ public class FT_Polluting extends FluidTrait {
|
||||
}
|
||||
writer.endObject();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deserializeJSON(JsonObject obj) {
|
||||
if(obj.has("release")) {
|
||||
@ -89,14 +89,14 @@ public class FT_Polluting extends FluidTrait {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void pollute(World world, int x, int y, int z, FluidType type, FluidReleaseType release, float mB) {
|
||||
FT_Polluting trait = type.getTrait(FT_Polluting.class);
|
||||
if(trait == null) return;
|
||||
if(release == FluidReleaseType.VOID) return;
|
||||
|
||||
|
||||
HashMap<PollutionType, Float> map = release == FluidReleaseType.BURN ? trait.burnMap : trait.releaseMap;
|
||||
|
||||
|
||||
for(Entry<PollutionType, Float> entry : map.entrySet()) {
|
||||
PollutionHandler.incrementPollution(world, x, y, z, entry.getKey(), entry.getValue() * mB);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user