diff options
8 files changed, 142 insertions, 5 deletions
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2d80b69a76..a76db97411 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Mon Jul 12 17:07:40 CST 2021 +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/GoodGenerator/Blocks/MyFluids/FluidsBuilder.java b/src/main/java/GoodGenerator/Blocks/MyFluids/FluidsBuilder.java index 73412c6a6e..ec456aaba2 100644 --- a/src/main/java/GoodGenerator/Blocks/MyFluids/FluidsBuilder.java +++ b/src/main/java/GoodGenerator/Blocks/MyFluids/FluidsBuilder.java @@ -18,6 +18,7 @@ public class FluidsBuilder { crackedNaquadahAsphalt_Lightly(); crackedNaquadahAsphalt_Moderately(); crackedNaquadahAsphalt_Heavily(); + combustionPromotor(); } public static void crackedNaquadahGas_Lightly(){ @@ -145,4 +146,14 @@ public class FluidsBuilder { tmp2.setBlockName("heavilyCrackedNaquadahAsphalt"); GameRegistry.registerBlock(tmp2,"heavilyCrackedNaquadahAsphalt"); } + + public static void combustionPromotor(){ + Fluid tmp = BaseFluid.BuildFluid("combustionPromotor"); + tmp.setGaseous(false) + .setTemperature(300); + BaseFluid tmp2 = new BaseFluid(tmp, Material.water); + tmp2.SetTexture("combustionPromotor"); + tmp2.setBlockName("combustionPromotor"); + GameRegistry.registerBlock(tmp2,"combustionPromotor"); + } } diff --git a/src/main/java/GoodGenerator/Blocks/TEs/UniversalChemicalFuelEngine.java b/src/main/java/GoodGenerator/Blocks/TEs/UniversalChemicalFuelEngine.java index 405acd20f0..bf96b6f29f 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/UniversalChemicalFuelEngine.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/UniversalChemicalFuelEngine.java @@ -9,17 +9,19 @@ import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_H import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyTunnel; import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM; import gregtech.api.GregTech_API; -import gregtech.api.enums.ItemList; -import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.*; -import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import static com.github.technus.tectech.mechanics.structure.StructureUtility.*; @@ -27,6 +29,11 @@ import static gregtech.api.enums.Textures.BlockIcons.*; public class UniversalChemicalFuelEngine extends GT_MetaTileEntity_MultiblockBase_EM implements TecTechEnabledMulti, IConstructable { + protected final double DIESEL_EFFICIENCY_COEFFICIENT = 0.45D; + protected final double GAS_EFFICIENCY_COEFFICIENT = 0.30D; + + private long leftEnergy = 0; + private IStructureDefinition<UniversalChemicalFuelEngine> multiDefinition = null; public UniversalChemicalFuelEngine(String name){super(name);} @@ -175,6 +182,112 @@ public class UniversalChemicalFuelEngine extends GT_MetaTileEntity_MultiblockBas } @Override + public int getPollutionPerTick(ItemStack aStack) { + return (int)Math.sqrt(this.mEUt) / 20; + } + + @Override + public boolean checkRecipe_EM(ItemStack aStack) { + + ArrayList<FluidStack> tFluids = getStoredFluids(); + + Collection<GT_Recipe> tDieselFuels = GT_Recipe.GT_Recipe_Map.sDieselFuels.mRecipeList; + Collection<GT_Recipe> tGasFuels = GT_Recipe.GT_Recipe_Map.sTurbineFuels.mRecipeList; + + int PromoterAmount = findLiquidAmount(getPromoter(), tFluids); + + for (GT_Recipe recipe : tDieselFuels) { + FluidStack tFuel = findFuel(recipe); + if (tFuel == null) continue; + int FuelAmount = findLiquidAmount(tFuel, tFluids); + if (FuelAmount == 0) continue; + double eff = calculateEfficiency(FuelAmount, PromoterAmount, DIESEL_EFFICIENCY_COEFFICIENT); + + consumeAllLiquid(tFuel); + consumeAllLiquid(getPromoter()); + + this.mEUt = (int)(eff * FuelAmount * recipe.mSpecialValue / 20.0D); + this.mMaxProgresstime = 20; + addAutoEnergy((long)(eff * FuelAmount * recipe.mSpecialValue / 20.0D)); + this.updateSlots(); + return true; + } + + for (GT_Recipe recipe : tGasFuels) { + FluidStack tFuel = findFuel(recipe); + if (tFuel == null) continue; + int FuelAmount = findLiquidAmount(tFuel, tFluids); + if (FuelAmount == 0) continue; + double eff = calculateEfficiency(FuelAmount, PromoterAmount, GAS_EFFICIENCY_COEFFICIENT); + + consumeAllLiquid(tFuel); + consumeAllLiquid(getPromoter()); + + this.mEUt = (int)(eff * FuelAmount * recipe.mSpecialValue / 20.0D); + this.mMaxProgresstime = 20; + addAutoEnergy((long)(eff * FuelAmount * recipe.mSpecialValue / 20.0D)); + this.updateSlots(); + return true; + } + + return false; + } + + public void addAutoEnergy(long outputPower){ + if (this.mDynamoHatches.size() > 0) + for (GT_MetaTileEntity_Hatch tHatch : this.mDynamoHatches){ + long voltage = tHatch.maxEUOutput(); + long power = voltage * tHatch.maxAmperesOut(); + long outputAmperes; + if (outputPower > power) doExplosion(8 * GT_Utility.getTier(power)); + if (outputPower >= voltage){ + leftEnergy += outputPower; + outputAmperes = leftEnergy / voltage; + leftEnergy -= outputAmperes * voltage; + addEnergyOutput_EM(voltage, outputAmperes); + } + else{ + addEnergyOutput_EM(outputPower, 1); + } + } + } + + public FluidStack getPromoter() { + return FluidRegistry.getFluidStack("combustionpromotor", 1); + } + + public FluidStack findFuel(GT_Recipe aFuel) { + return GT_Utility.getFluidForFilledItem(aFuel.mInputs[0], true); + } + + public double calculateEfficiency(int aFuel, int aPromoter, double coefficient){ + if (aPromoter == 0) return 0.0d; + return Math.exp(-coefficient * (double)aFuel / (double)aPromoter); + } + + public int findLiquidAmount(FluidStack liquid, List<FluidStack> input) { + int cnt = 0; + for (FluidStack fluid : input){ + if (fluid.isFluidEqual(liquid)) { + cnt += fluid.amount; + } + } + if (cnt < 0) cnt = 0; + return cnt; + } + + public void consumeAllLiquid(FluidStack liquid) { + for (GT_MetaTileEntity_Hatch_Input tHatch : mInputHatches) { + if (isValidMetaTileEntity(tHatch)) { + FluidStack tLiquid = tHatch.getFluid(); + if (tLiquid != null && tLiquid.isFluidEqual(liquid)) { + tHatch.drain(tLiquid.amount, 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[]{ diff --git a/src/main/resources/assets/goodgenerator/lang/en_US.lang b/src/main/resources/assets/goodgenerator/lang/en_US.lang index 164a0a2ea7..afcb859ee5 100644 --- a/src/main/resources/assets/goodgenerator/lang/en_US.lang +++ b/src/main/resources/assets/goodgenerator/lang/en_US.lang @@ -34,6 +34,7 @@ fluid.heavilyCrackedHeavyNaquadahFuel=Severely Cracked Heavy Naquadah Fuel fluid.lightlyCrackedNaquadahAsphalt=Lightly Cracked Naquadah Asphalt fluid.moderatelyCrackedNaquadahAsphalt=Moderately Cracked Naquadah Asphalt fluid.heavilyCrackedNaquadahAsphalt=Severely Cracked Naquadah Asphalt +fluid.combustionPromotor=Combustion Promoter tile.lightlyCrackedNaquadahGas.name=Lightly Cracked Naquadah Gas tile.moderatelyCrackedNaquadahGas.name=Moderately Cracked Naquadah Gas @@ -47,6 +48,7 @@ tile.heavilyCrackedHeavyNaquadahFuel.name=Severely Cracked Heavy Naquadah Fuel tile.lightlyCrackedNaquadahAsphalt.name=Lightly Cracked Naquadah Asphalt tile.moderatelyCrackedNaquadahAsphalt.name=Moderately Cracked Naquadah Asphalt tile.heavilyCrackedNaquadahAsphalt.name=Severely Cracked Naquadah Asphalt +tile.combustionPromotor.name=Combustion Promoter itemGroup.Good Generator=Good Generator diff --git a/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.flowing.png b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.flowing.png Binary files differnew file mode 100644 index 0000000000..fa65b1a41a --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.flowing.png diff --git a/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.flowing.png.mcmeta b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.flowing.png.mcmeta new file mode 100644 index 0000000000..83e994c588 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.flowing.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":2 + } +} diff --git a/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.still.png b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.still.png Binary files differnew file mode 100644 index 0000000000..fa65b1a41a --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.still.png diff --git a/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.still.png.mcmeta b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.still.png.mcmeta new file mode 100644 index 0000000000..83e994c588 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/blocks/fluids/combustionPromotor.still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":2 + } +} |