From 1a9da01d74f897fbe450c2c508338d98d1aa3802 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 7 Jun 2023 16:36:26 +0200 Subject: [PATCH] pollution stuff --- changelog | 1 + .../java/com/hbm/handler/pollution/PollutionHandler.java | 3 ++- .../java/com/hbm/tileentity/machine/TileEntityCrucible.java | 6 ++++++ .../com/hbm/tileentity/machine/TileEntityDiFurnace.java | 4 ++++ .../com/hbm/tileentity/machine/TileEntityFireboxBase.java | 3 +++ .../hbm/tileentity/machine/TileEntityHeaterOilburner.java | 4 ++++ .../com/hbm/tileentity/machine/TileEntityMachineCoal.java | 4 ++++ .../machine/TileEntityMachineCombustionEngine.java | 4 ++++ 8 files changed, 28 insertions(+), 1 deletion(-) diff --git a/changelog b/changelog index 2fdd4c818..f3f78f256 100644 --- a/changelog +++ b/changelog @@ -6,6 +6,7 @@ * Chlorocalcite * A new bedrock ore, the powder can be heated in the combination furnace to make calcium and chlorine * Blocks for cadmium, TC and CD alloy +* Machines now emit soot. Soot collects in units of 4x4 chunks, and spreads into neighboring regions. High levels of soot cause visible smog. ## Changed * Updated russian localization diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java index 1881e1019..e1bdbf7cd 100644 --- a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -197,7 +197,8 @@ public class PollutionHandler { } } - entry.getValue().pollution = newPollution; + entry.getValue().pollution.clear(); + entry.getValue().pollution.putAll(newPollution); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 3581d35b4..a6ee9501c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -7,6 +7,8 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerCrucible; import com.hbm.inventory.gui.GUICrucible; import com.hbm.inventory.material.MaterialShapes; @@ -169,6 +171,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } + + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F); } /* pour recipe stack */ @@ -207,6 +211,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } + + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F); } /* clean up stacks */ diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java index a2da04057..57aa32c9c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineDiFurnace; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerDiFurnace; import com.hbm.inventory.gui.GUIDiFurnace; import com.hbm.inventory.recipes.BlastFurnaceRecipes; @@ -211,6 +213,8 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr if(fuel < 0) { fuel = 0; } + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * (extension ? 3 : 1)); } else { progress = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index 9fb40234e..b4d5a109c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -1,6 +1,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -74,6 +76,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem if(this.heatEnergy < getMaxHeat()) { burnTime--; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); } this.wasOn = true; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index 535d5939b..a4ba8adab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -1,5 +1,7 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerOilburner; @@ -70,6 +72,8 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements int heat = (int)(type.getHeatEnergy() / 1000); this.heatEnergy += heat * toBurn; + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * burnRate * 0.5F); shouldCool = false; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java index 3abf74d1f..449e3aea4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java @@ -5,6 +5,8 @@ import java.io.IOException; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.machine.MachineCoal; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.FluidContainerRegistry; @@ -290,6 +292,8 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide if(burnTime > 0) { burnTime--; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); + if(tank.getFill() > 0) { tank.setFill(tank.getFill() - 1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index 18d48904a..64ea819ff 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -1,6 +1,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCombustionEngine; import com.hbm.inventory.fluid.FluidType; @@ -84,6 +86,8 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp this.power += toBurn * (trait.getCombustionEnergy() / 10_000D) * eff; fill -= toBurn; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * setting * 0.1F); + if(toBurn > 0) { wasOn = true; }