aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/GT_Pollution.java
blob: 743a1c5cebe3021aae690b2ce1687349f005a00d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
	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 {
	

	static List<ChunkPosition> tList = null;
	static int loops = 1;

	public static void onWorldTick(int aTick){
		if(aTick == 0 || (tList==null && GT_Proxy.chunkData!=null)){
			tList = new ArrayList<ChunkPosition>(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<ChunkPosition> 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(tNPol<tPollution){
							int tDiff = tPollution - tNPol;
							tDiff = tDiff/10;
							tNPol += tDiff;
							tPollution -= tDiff;
							GT_Proxy.chunkData.get(tNPos)[1] = tNPol;
						}
					}else{
						GT_Utility.getUndergroundOil(Minecraft.getMinecraft().theWorld,tPos.chunkPosX*16,tPos.chunkPosZ*16);
					}
				}}
				int[] tArray = GT_Proxy.chunkData.get(tPos);
				tArray[1] = tPollution;
				GT_Proxy.chunkData.remove(tPos);
				GT_Proxy.chunkData.put(tPos, tArray);
				//Create Pollution effects
					
					}
				}
			}
		}
	}
	
	public static void addPollution(ChunkPosition aPos, int aPollution){
		try{
		ChunkPosition tPos = new ChunkPosition(aPos.chunkPosX/16, 1, aPos.chunkPosZ/16);
//		System.out.println("add pollution x: "+ tPos.chunkPosX +" z: " + tPos.chunkPosZ +" poll: "+aPollution);
		int[] tData = new int[2];
		if(GT_Proxy.chunkData.containsKey(tPos)){
			tData = GT_Proxy.chunkData.get(tPos);
			if(tData.length>1){
				tData[1] += aPollution;
			}
		}else{
			tData[1] += aPollution;
			GT_Proxy.chunkData.put(tPos, tData);
		}
		}catch(Exception e){
			
		}
	}
}