diff options
| author | Foghrye4 <foghrye4@gmail.com> | 2017-01-27 11:32:28 +0300 |
|---|---|---|
| committer | Foghrye4 <foghrye4@gmail.com> | 2017-01-27 11:32:28 +0300 |
| commit | 2db8e30b1d2151fdde5d08a6c06aef55f0c397d2 (patch) | |
| tree | e8cd0022f3a30a5c952092e0ea4c7ffdafcdf7bb /ihl/explosion/ChunkAndWorldLoadEventHandler.java | |
| parent | ffe23313fb7421b0a1849b420baf708999023f7b (diff) | |
License, readme and stuff
Diffstat (limited to 'ihl/explosion/ChunkAndWorldLoadEventHandler.java')
| -rw-r--r-- | ihl/explosion/ChunkAndWorldLoadEventHandler.java | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/ihl/explosion/ChunkAndWorldLoadEventHandler.java b/ihl/explosion/ChunkAndWorldLoadEventHandler.java new file mode 100644 index 0000000..d52672c --- /dev/null +++ b/ihl/explosion/ChunkAndWorldLoadEventHandler.java @@ -0,0 +1,72 @@ +package ihl.explosion; + +import ihl.IHLMod; + +import java.util.Iterator; +import java.util.Set; + +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.Explosion; +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)) + { + Set<Integer[]> bwArraySet = bwdata.data.remove(cc); + int[] svset = new int[bwArraySet.size()]; + int[] directionMask = new int[3]; + int i=0; + Iterator<Integer[]> bwArrayI = bwArraySet.iterator(); + Integer[] bwArray = null; + while(bwArrayI.hasNext()) + { + bwArray=bwArrayI.next(); + svset[i]=bwArray[0]; + i++; + directionMask[0]=bwArray[5]; + directionMask[1]=bwArray[6]; + directionMask[2]=bwArray[7]; + IHLMod.explosionHandler.setPower(bwArray[0], bwArray[4]); + } +/* IHLMod.log.info("Doing schleduled explosion. Direction: ("+ + directionMask[0]+";"+directionMask[1]+";"+directionMask[2]+") "+ + "svset.length"+svset.length);*/ + IHLMod.explosionHandler.doExplosion(event.world, bwArray[1], bwArray[2], bwArray[3], svset, directionMask, new Explosion(event.world, null, bwArray[1], bwArray[2], bwArray[3], 100f)); + IHLMod.explosionHandler.sendChunkUpdateToPlayersInExplosionAffectedZone(event.world, bwArray[1], bwArray[2], bwArray[3]); + } + } + } + + @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)); + } + } +} |
