blob: 3fb51f7e65717098c4b95ddb7c38281216e9a804 (
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
|
package ihl.utils;
import ihl.IHLMod;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.world.ChunkCoordIntPair;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
public class ChunkAndWorldLoadEventHandler
{
public static ChunkAndWorldLoadEventHandler instance;
public ChunkAndWorldLoadEventHandler()
{
instance=this;
}
@SubscribeEvent
public void onChunkLoadEvent(net.minecraftforge.event.world.ChunkEvent.Load event)
{
if(event.getChunk().isChunkLoaded && IHLMod.explosionHandler.blastWaveByDimensionId.containsKey(event.world.provider.dimensionId))
{
WorldSavedDataBlastWave bwdata = IHLMod.explosionHandler.blastWaveByDimensionId.get(event.world.provider.dimensionId);
long cc = ChunkCoordIntPair.chunkXZ2Int(event.getChunk().xPosition, event.getChunk().zPosition);
if(bwdata.data.containsKey(cc))
{
Long[][] bwArray = bwdata.data.remove(cc);
Set<Long> svset = new HashSet(16);
int sourceIndex=0;
for(int i1=0;i1<16;i1++)
{
if(bwArray[i1][0]!=null && !bwArray[i1][0].equals(0))
{
sourceIndex=i1;
svset.add(bwArray[i1][0]);
IHLMod.explosionHandler.setPower(bwArray[i1][0], bwArray[i1][4].intValue());
}
}
IHLMod.explosionHandler.doExplosion(event.world, bwArray[sourceIndex][1].intValue(), bwArray[sourceIndex][2].intValue(), bwArray[sourceIndex][3].intValue(), svset);
}
}
}
@SubscribeEvent
public void onWorldLoadEvent(net.minecraftforge.event.world.WorldEvent.Load event)
{
WorldSavedDataBlastWave blastWave = (WorldSavedDataBlastWave) event.world.mapStorage.loadData(WorldSavedDataBlastWave.class, "blastWave");
if(blastWave!=null)
{
IHLMod.explosionHandler.blastWaveByDimensionId.put(event.world.provider.dimensionId,blastWave);
}
}
@SubscribeEvent
public void onWorldSaveEvent(net.minecraftforge.event.world.WorldEvent.Save event)
{
if(IHLMod.explosionHandler.blastWaveByDimensionId.containsKey(event.world.provider.dimensionId))
{
event.world.mapStorage.setData("blastWave",IHLMod.explosionHandler.blastWaveByDimensionId.get(event.world.provider.dimensionId));
}
}
}
|