From 16fb901529b24d4d1d4aaf64984b72de75fda0c5 Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Tue, 27 Sep 2016 02:00:19 +0200 Subject: More Pollution & bugfixes --- src/main/java/gregtech/common/GT_Pollution.java | 73 +++++++++++++++++++--- .../multi/GT_MetaTileEntity_DistillationTower.java | 5 +- 2 files changed, 68 insertions(+), 10 deletions(-) (limited to 'src/main/java/gregtech/common') diff --git a/src/main/java/gregtech/common/GT_Pollution.java b/src/main/java/gregtech/common/GT_Pollution.java index feeeafe4b0..743a1c5ceb 100644 --- a/src/main/java/gregtech/common/GT_Pollution.java +++ b/src/main/java/gregtech/common/GT_Pollution.java @@ -1,28 +1,85 @@ -package gregtech.common; + package gregtech.common; +import java.util.ArrayList; +import java.util.List; + +import gregtech.api.util.GT_Utility; +import net.minecraft.client.Minecraft; import net.minecraft.world.ChunkPosition; +import net.minecraft.world.WorldManager; public class GT_Pollution { -// List list = new ArrayList(chunkData.keySet()); + static List tList = null; + static int loops = 1; public static void onWorldTick(int aTick){ - + if(aTick == 0 || (tList==null && GT_Proxy.chunkData!=null)){ + tList = new ArrayList(GT_Proxy.chunkData.keySet()); + loops = (tList.size()/1200) + 1; + } + if(tList!=null && tList.size() > 0){ + int i = 0; + for(; i < loops ; i++){ + ChunkPosition tPos = tList.get(0); + tList.remove(0); + if(tPos!=null && GT_Proxy.chunkData.containsKey(tPos)){ + int tPollution = GT_Proxy.chunkData.get(tPos)[1]; +// System.out.println("process: "+tPos.chunkPosX+" "+tPos.chunkPosZ+" "+tPollution); + //Reduce pollution in chunk + tPollution = (int)(0.99f*tPollution); + tPollution -= 2000; + if(tPollution<=0){tPollution = 0;}else{ + //Spread Pollution + if(tPollution>50000){ + List tNeighbor = new ArrayList(); + tNeighbor.add(new ChunkPosition(tPos.chunkPosX+1, 1, tPos.chunkPosZ+1)); + tNeighbor.add(new ChunkPosition(tPos.chunkPosX+1, 1, tPos.chunkPosZ-1)); + tNeighbor.add(new ChunkPosition(tPos.chunkPosX-1, 1, tPos.chunkPosZ+1)); + tNeighbor.add(new ChunkPosition(tPos.chunkPosX-1, 1, tPos.chunkPosZ-1)); + for(ChunkPosition tNPos : tNeighbor){ + if(GT_Proxy.chunkData.containsKey(tNPos)){ + int tNPol = GT_Proxy.chunkData.get(tNPos)[1]; + if(tNPol1){ tData[1] += aPollution; } - GT_Proxy.chunkData.replace(aPos, tData); }else{ tData[1] += aPollution; - GT_Proxy.chunkData.put(aPos, tData); + GT_Proxy.chunkData.put(tPos, tData); + } + }catch(Exception e){ + } - } } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java index 493f4407b4..246df6707c 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java @@ -46,7 +46,7 @@ public class GT_MetaTileEntity_DistillationTower "1x Output Bus (Any bottom layer casing)", "1x Maintenance Hatch (Any casing)", "1x Energy Hatch (Any casing)", - "Clean Stainless Steel Casings for the rest (26 at least!)"}; + "Clean Stainless Steel Casings for the rest (36 at least!)"}; } public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { @@ -174,7 +174,8 @@ public class GT_MetaTileEntity_DistillationTower for (int i = 0; i < tmpHatches.length; i++) { this.mOutputHatches.add(tmpHatches[i]); } - return tAmount >= 26; + if(this.mMaintenanceHatches.size()!=1)return false; + return tAmount >= 36; } public boolean ignoreController(Block tTileEntity) { -- cgit