summaryrefslogtreecommitdiff
path: root/ihl/utils/ChunkAndWorldLoadEventHandler.java
diff options
context:
space:
mode:
authorFoghrye4 <foghrye4@gmail.com>2016-04-11 19:44:54 +0300
committerFoghrye4 <foghrye4@gmail.com>2016-04-11 19:44:54 +0300
commit05c78126859231a68e199dc34613689bd0978e2f (patch)
tree050bea104a18c72905095d29f31bec2935a27a24 /ihl/utils/ChunkAndWorldLoadEventHandler.java
Initial commit
Diffstat (limited to 'ihl/utils/ChunkAndWorldLoadEventHandler.java')
-rw-r--r--ihl/utils/ChunkAndWorldLoadEventHandler.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/ihl/utils/ChunkAndWorldLoadEventHandler.java b/ihl/utils/ChunkAndWorldLoadEventHandler.java
new file mode 100644
index 0000000..3fb51f7
--- /dev/null
+++ b/ihl/utils/ChunkAndWorldLoadEventHandler.java
@@ -0,0 +1,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));
+ }
+ }
+}