From 2db8e30b1d2151fdde5d08a6c06aef55f0c397d2 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Fri, 27 Jan 2017 11:32:28 +0300 Subject: License, readme and stuff --- ihl/explosion/ChunkAndWorldLoadEventHandler.java | 72 ++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 ihl/explosion/ChunkAndWorldLoadEventHandler.java (limited to 'ihl/explosion/ChunkAndWorldLoadEventHandler.java') 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 bwArraySet = bwdata.data.remove(cc); + int[] svset = new int[bwArraySet.size()]; + int[] directionMask = new int[3]; + int i=0; + Iterator 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)); + } + } +} -- cgit v1.2.3