summaryrefslogtreecommitdiff
path: root/ihl/explosion/ChunkAndWorldLoadEventHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'ihl/explosion/ChunkAndWorldLoadEventHandler.java')
-rw-r--r--ihl/explosion/ChunkAndWorldLoadEventHandler.java72
1 files changed, 32 insertions, 40 deletions
diff --git a/ihl/explosion/ChunkAndWorldLoadEventHandler.java b/ihl/explosion/ChunkAndWorldLoadEventHandler.java
index d52672c..b85e636 100644
--- a/ihl/explosion/ChunkAndWorldLoadEventHandler.java
+++ b/ihl/explosion/ChunkAndWorldLoadEventHandler.java
@@ -9,64 +9,56 @@ import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.world.Explosion;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
-public class ChunkAndWorldLoadEventHandler
-{
+public class ChunkAndWorldLoadEventHandler {
public static ChunkAndWorldLoadEventHandler instance;
- public ChunkAndWorldLoadEventHandler()
- {
- instance=this;
+
+ 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);
+ 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))
- {
+ 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]);
+ 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);
+ }
+ if (!IHLMod.explosionHandler.isCalculating) {
+ IHLMod.explosionHandler.sendChunkUpdateToPlayersInExplosionAffectedZone(event.world, bwArray[1],
+ bwArray[2], bwArray[3]);
}
-/* 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);
+ 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));
+ 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));
}
}
}