summaryrefslogtreecommitdiff
path: root/ihl/explosion/ChunkAndWorldLoadEventHandler.java
diff options
context:
space:
mode:
authorFoghrye4 <foghrye4@gmail.com>2017-02-12 20:43:03 +0300
committerFoghrye4 <foghrye4@gmail.com>2017-02-12 20:43:03 +0300
commit5cb4c6e24033cf337812390d99a6817d24d21eab (patch)
tree695789855920199efd4702a7bb3e4bacfe58b9f0 /ihl/explosion/ChunkAndWorldLoadEventHandler.java
parent8f22398517206aed21a7fd840f463332429fae35 (diff)
Removed explosion radius limitations. Explosion calculation optimized (reduced memory usage). One more detonator and explosive pack recipe. GT6 recipes for both chemical reactors and cryogenic distiller. Max stack size of muffle furnace is limited to 32. A lot of old features are removed.
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));
}
}
}