diff options
| author | Foghrye4 <foghrye4@gmail.com> | 2017-08-10 18:52:45 +0300 |
|---|---|---|
| committer | Foghrye4 <foghrye4@gmail.com> | 2017-08-10 18:52:45 +0300 |
| commit | 0427ab89f1753a44b30cbc35ce021cbbdc845109 (patch) | |
| tree | abe418ff5ec174e712fe8dedd434548a945b15a3 /src/main/java/ihl/explosion/ChunkAndWorldLoadEventHandler.java | |
| parent | 877312184c472d9845e5ef1008bc538f4634059f (diff) | |
fix missing source folder
Diffstat (limited to 'src/main/java/ihl/explosion/ChunkAndWorldLoadEventHandler.java')
| -rw-r--r-- | src/main/java/ihl/explosion/ChunkAndWorldLoadEventHandler.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/main/java/ihl/explosion/ChunkAndWorldLoadEventHandler.java b/src/main/java/ihl/explosion/ChunkAndWorldLoadEventHandler.java new file mode 100644 index 0000000..c2f7e0b --- /dev/null +++ b/src/main/java/ihl/explosion/ChunkAndWorldLoadEventHandler.java @@ -0,0 +1,59 @@ +package ihl.explosion; + +import java.util.Iterator; +import java.util.Set; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import ihl.IHLMod; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.Explosion; + +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[] directionMask = new int[3]; + Iterator<Integer[]> bwArrayI = bwArraySet.iterator(); + Integer[] bwArray = null; + while (bwArrayI.hasNext()) { + bwArray = bwArrayI.next(); + directionMask[0] = bwArray[5]; + directionMask[1] = bwArray[6]; + directionMask[2] = bwArray[7]; + Explosion explosion = new Explosion(event.world, null, bwArray[1], bwArray[2], bwArray[3], 100f); + IHLMod.explosionHandler.breakBlocksAndGetDescendants(event.world, bwArray[1], bwArray[2], + bwArray[3], explosion, bwArray[0], bwArray[4], directionMask); + } + } + } + } + + @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)); + } + } +} |
