work on gases

This commit is contained in:
Mikhail Kiselev 2024-07-17 00:35:18 -05:00
parent e4bd203c2a
commit 43703e11f4
Signed by: Sangui
GPG key ID: DAB055E38B47526A
7 changed files with 124 additions and 17 deletions

View file

@ -78,13 +78,17 @@ configurations {
}
repositories {
maven {
name = "chickenbones"
url = "http://chickenbones.net/maven/"
}
maven {
name = "gt"
url = "https://gregtech.overminddl1.com/"
}
maven {
name = "ic2"
url = "https://maven.ic2.player.to/"
url = "https://maven2.ic2.player.to/"
}
maven {
name = "k4u"
@ -125,7 +129,9 @@ dependencies {
compileOnly "com.shedar.IC2NuclearControl:IC2NuclearControl:2.4.3a:dev"
compileOnly "pneumaticCraft:PneumaticCraft-1.7.10:1.12.7-152:userdev"
compileOnly "glenn:gasesFramework:1.7.10-1.2.4:dev"
compileOnly "glenn:gases:1.7.10-1.6.7:dev"
}
processResources

View file

@ -0,0 +1,12 @@
package gregtech.api.interfaces.internal;
import net.minecraftforge.fluids.Fluid;
public interface IGasesCompat {
public boolean registerGregGas(Fluid gas);
public boolean registerOtherGasesAsFluids();
public boolean registerFluidCannerRecipes();
}

View file

@ -1,20 +1,38 @@
package gregtech.common;
import gregtech.api.interfaces.internal.IGasesCompat;
import gregtech.api.interfaces.internal.GasesCompat;
import net.minecraftforge.fluids.Fluid;
//import glenn.gasesframework.api.gastype.GasType;
import net.minecraftforge.fluids.FluidRegistry;
public class GT_GasesCompat implements GasesCompat {
import java.util.HashMap;
import glenn.gasesframework.api.Combustibility;
import glenn.gasesframework.api.GFAPI;
import glenn.gasesframework.api.gastype.GasType;
public class GT_GasesCompat implements IGasesCompat {
private final HashMap<GasType, Fluid> _fluidMap = new HashMap<GasType, Fluid>();
@Override
public boolean registerGregGas(Fluid gas) {
// TODO Auto-generated method stub
return false;
String name = gas.getName();
int id = gas.getID() + 19; //Glenn's gases uses 18 IDs so we can safely start at 19
int color = gas.getColor();
int density = gas.getDensity();
//TODO: introduction of per-gas properties not in fluid data
GasType gt = new GasType(false, id, name, color, 0, density, Combustibility.NONE);
GFAPI.registry.registerGasType(gt);
return true;
}
@Override
public boolean registerOtherGasesAsFluids() {
// TODO Auto-generated method stub
for(int i = 0; i < 18; i++) {
GasType gt = GFAPI.registry.getGasTypeByID(i);
Fluid f = gregOrGenerateFluid(gt);
_fluidMap.put(gt, f);
}
return false;
}
@ -23,5 +41,32 @@ public class GT_GasesCompat implements GasesCompat {
// TODO Auto-generated method stub
return false;
}
public Fluid getFluidFromGas(Object gas)
{
GasType gt = (GasType) gas;
return _fluidMap.get(gt);
}
public Fluid gregOrGenerateFluid(GasType gas)
{
switch (gas.gasID) {
case 0:
return null;
case 1:
return null;
case 2:
return FluidRegistry.getFluid("Steam");
case 3:
return FluidRegistry.getFluid("gas_natural_gas");
case 7:
return FluidRegistry.getFluid("liquid_hydricsulfur");
case 8:
return FluidRegistry.getFluid("NitrogenDioxide");
case 13:
return FluidRegistry.getFluid("Chlorine");
default:
return null; //TODO: Auto-generate gas with config options for customization
}
}
}

View file

@ -1578,6 +1578,12 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
rFuelValue = Math.max(rFuelValue, 150000);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "gemPetrolCoke")) {
rFuelValue = Math.max(rFuelValue, 2400);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustPetrolCoke")) {
rFuelValue = Math.max(rFuelValue, 2400);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustSmallPetrolCoke")) {
rFuelValue = Math.max(rFuelValue, 600);
} else if (GT_OreDictUnificator.isItemStackInstanceOf(aFuel, "dustTinyPetrolCoke")) {
rFuelValue = Math.max(rFuelValue, 266);
}if (GT_Utility.areStacksEqual(aFuel, ItemList.Block_SSFUEL.get(1, new Object[0]))) {
rFuelValue = Math.max(rFuelValue, 100000);
}

View file

@ -11,6 +11,7 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import java.util.ArrayList;
import java.lang.Math;
import static gregtech.api.enums.GT_Values.VN;
import static gregtech.common.GT_UndergroundOil.undergroundOil;
@ -114,9 +115,9 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
if (mOilFieldChunks.isEmpty()) {
Chunk tChunk = getBaseMetaTileEntity().getWorld().getChunkFromBlockCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord());
int range = getRangeInChunks();
int xChunk = (tChunk.xPosition / range) * range - ((tChunk.xPosition < 0 && tChunk.xPosition % range != 0) ? range : 0);
int zChunk = (tChunk.zPosition / range) * range - ((tChunk.zPosition < 0 && tChunk.zPosition % range != 0) ? range : 0);
int xChunk = Math.floorDiv(tChunk.xPosition,range) * range; //Java was written by idiots. For negative values, / returns rounded towards zero. Fucking morons.
int zChunk = Math.floorDiv(tChunk.zPosition,range) * range; //^ Actually, this is the behaviour of C intentionally (and Ritchie was no 'idiot') but I'm leaving this here to credit the guy who actually wrote the fix.
for (int i = 0; i < range; i++) {
for (int j = 0; j < range; j++) {
tChunk = getBaseMetaTileEntity().getWorld().getChunkFromChunkCoords(xChunk + i, zChunk + j);
@ -127,19 +128,22 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
}
}
}
if (mOilFieldChunks.isEmpty()) return false;
return true;
return !mOilFieldChunks.isEmpty();
}
private FluidStack pumpOil(float speed){
if (mOilId <= 0) return null;
FluidStack tFluid, tOil;
tOil = new FluidStack(FluidRegistry.getFluid(mOilId), 0);
ArrayList<Chunk> emptyChunks = new ArrayList<Chunk>();
for (Chunk tChunk : mOilFieldChunks) {
tFluid = undergroundOil(tChunk, speed);
if (tFluid == null) mOilFieldChunks.remove(tChunk);
if (tFluid == null || tFluid.amount<1) emptyChunks.add(tChunk);
if (tOil.isFluidEqual(tFluid)) tOil.amount += tFluid.amount;
}
for( Chunk tChunk : emptyChunks) {
mOilFieldChunks.remove( tChunk );
}
return tOil.amount == 0 ? null : tOil;
}
}

View file

@ -103,6 +103,40 @@ public class GT_MetaTileEntity_PyrolyseOven extends GT_MetaTileEntity_MultiBlock
}
}
}
//TODO: Find out how to make this properly - until then, using an input hatch with the circuit is enough to get fluid-only recipes going.
/*if(tInputList.isEmpty() && !tFluidInputs.isEmpty()){
byte tTier = (byte) Math.max(1, GT_Utility.getTier(getMaxInputVoltage()));
GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sPyrolyseRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], new FluidStack[] {tFluidInputs.get(0)}, (ItemStack[]) null);
if (tRecipe != null) {
if (tRecipe.isRecipeInputEqual(true, new FluidStack[]{tFluidInputs.get(0)}, (ItemStack[]) null)) {
this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
this.mEfficiencyIncrease = 10000;
this.mEUt = tRecipe.mEUt;
if (tRecipe.mEUt <= 16) {
this.mEUt = (tRecipe.mEUt * (1 << tTier - 1) * (1 << tTier - 1));
this.mMaxProgresstime = (tRecipe.mDuration / (1 << tTier - 1));
} else {
this.mEUt = tRecipe.mEUt;
this.mMaxProgresstime = tRecipe.mDuration;
while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) {
this.mEUt *= 4;
this.mMaxProgresstime /= 2;
}
}
if (this.mEUt > 0) {
this.mEUt = (-this.mEUt);
}
this.mMaxProgresstime = mMaxProgresstime * 2 / (1 + coilMetaID);
this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
if (tRecipe.mOutputs.length > 0) this.mOutputItems = new ItemStack[]{tRecipe.getOutput(0)};
if (tRecipe.mFluidOutputs.length > 0)
this.mOutputFluids = new FluidStack[]{tRecipe.getFluidOutput(0)};
updateSlots();
return true;
}
}
}*/
return false;
}

View file

@ -2806,7 +2806,7 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_Values.RA.addChemicalRecipeForBasicMachineOnly(Materials.Ethylene.getCells(5), Materials.Chlorine.getCells(1), GT_Values.NF, GT_Values.NF, Materials.VinylChloride.getCells(6), GT_Values.NI, 240, 30);
//GT_Values.RA.addChemicalRecipe(Materials.LightFuel.getCells(1), GT_Values.NI, Materials.NitricAcid.getFluid(250), Materials.NitroFuel.getFluid(1000), Materials.Empty.getCells(1), 80, 8);
GT_Values.RA.addChemicalRecipe(Materials.Fuel.getCells(1), GT_Values.NI, Materials.NitricAcid.getFluid(250), Materials.NitroFuel.getFluid(1000), Materials.Empty.getCells(2), 80, 8);
GT_Values.RA.addChemicalRecipe(Materials.Fuel.getCells(1), GT_Values.NI, Materials.NitricAcid.getFluid(250), Materials.NitroFuel.getFluid(1000), Materials.Empty.getCells(1), 80, 8);
GT_Values.RA.addChemicalRecipe(Materials.BioDiesel.getCells(4), GT_Values.NI, Materials.NitricAcid.getFluid(1000), Materials.NitroFuel.getFluid(3000), Materials.Empty.getCells(4), 320, 8);
//GT_Values.RA.addChemicalRecipe(Materials.NitricAcid.getCells(1), GT_Values.NI, Materials.LightFuel.getFluid(4000), Materials.NitroFuel.getFluid(4000), Materials.Empty.getCells(1), 320, 8);
GT_Values.RA.addChemicalRecipe(Materials.NitricAcid.getCells(1), GT_Values.NI, Materials.Fuel.getFluid(4000), Materials.NitroFuel.getFluid(4000), Materials.Empty.getCells(1), 320, 8);
@ -3472,7 +3472,7 @@ public class GT_MachineRecipeLoader implements Runnable {
//Cracked Resid byproducts
GT_Values.RA.addUniversalDistillationRecipe(Materials.CrackedResid.getFluid(100),
new FluidStack[]{Materials.HeavyFuel.getFluid(60), Materials.LightFuel.getFluid(30), Materials.Naphtha.getFluid(10), Materials.Butane.getGas(3), Materials.Gas.getGas(2)},
new FluidStack[]{Materials.HeavyFuel.getFluid(80), Materials.LightFuel.getFluid(40), Materials.Naphtha.getFluid(20), Materials.Butane.getGas(10), Materials.Gas.getGas(20), Materials.Methane.getGas(30)},
Materials.Bitumen.getGems(1), 240, 120);
}