Fix ChunkDataEvent.Load not firing, it now fires in the aync thread. Be careful. Closes #6471
This commit is contained in:
parent
69ae178bf4
commit
c72d6e9122
2 changed files with 29 additions and 3 deletions
|
@ -17,7 +17,24 @@
|
||||||
chunkprimer.func_201637_h(blockpos);
|
chunkprimer.func_201637_h(blockpos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -294,12 +295,22 @@
|
@@ -182,6 +183,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chunkstatus$type == ChunkStatus.Type.LEVELCHUNK) {
|
||||||
|
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.ChunkDataEvent.Load(ichunk, compoundnbt, chunkstatus$type));
|
||||||
|
return new ChunkPrimerWrapper((Chunk)ichunk);
|
||||||
|
} else {
|
||||||
|
ChunkPrimer chunkprimer1 = (ChunkPrimer)ichunk;
|
||||||
|
@@ -215,6 +217,8 @@
|
||||||
|
chunkprimer1.func_205767_a(generationstage$carving, BitSet.valueOf(compoundnbt5.func_74770_j(s1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.ChunkDataEvent.Load(ichunk, compoundnbt, chunkstatus$type));
|
||||||
|
+
|
||||||
|
return chunkprimer1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -294,12 +298,22 @@
|
||||||
for(int k = 0; k < chunk.func_177429_s().length; ++k) {
|
for(int k = 0; k < chunk.func_177429_s().length; ++k) {
|
||||||
for(Entity entity : chunk.func_177429_s()[k]) {
|
for(Entity entity : chunk.func_177429_s()[k]) {
|
||||||
CompoundNBT compoundnbt3 = new CompoundNBT();
|
CompoundNBT compoundnbt3 = new CompoundNBT();
|
||||||
|
|
|
@ -22,6 +22,7 @@ package net.minecraftforge.event.world;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
import net.minecraft.world.chunk.Chunk;
|
||||||
|
import net.minecraft.world.chunk.ChunkStatus;
|
||||||
import net.minecraft.world.chunk.IChunk;
|
import net.minecraft.world.chunk.IChunk;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.eventbus.api.Cancelable;
|
import net.minecraftforge.eventbus.api.Cancelable;
|
||||||
|
@ -54,7 +55,7 @@ public class ChunkDataEvent extends ChunkEvent
|
||||||
/**
|
/**
|
||||||
* ChunkDataEvent.Load is fired when vanilla Minecraft attempts to load Chunk data.<br>
|
* ChunkDataEvent.Load is fired when vanilla Minecraft attempts to load Chunk data.<br>
|
||||||
* This event is fired during chunk loading in
|
* This event is fired during chunk loading in
|
||||||
* {@link net.minecraftforge.common.chunkio.ChunkIOProvider#syncCallback()}.<br>
|
* {@link net.minecraft.world.chunk.storage.ChunkSerializer.read(ServerWorld, TemplateManager, PointOfInterestManager, ChunkPos, CompoundNBT)} which means it is async, so be careful.<br>
|
||||||
* <br>
|
* <br>
|
||||||
* This event is not {@link Cancelable}.<br>
|
* This event is not {@link Cancelable}.<br>
|
||||||
* <br>
|
* <br>
|
||||||
|
@ -64,9 +65,17 @@ public class ChunkDataEvent extends ChunkEvent
|
||||||
**/
|
**/
|
||||||
public static class Load extends ChunkDataEvent
|
public static class Load extends ChunkDataEvent
|
||||||
{
|
{
|
||||||
public Load(IChunk chunk, CompoundNBT data)
|
private ChunkStatus.Type status;
|
||||||
|
|
||||||
|
public Load(IChunk chunk, CompoundNBT data, ChunkStatus.Type status)
|
||||||
{
|
{
|
||||||
super(chunk, data);
|
super(chunk, data);
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChunkStatus.Type getStatus()
|
||||||
|
{
|
||||||
|
return this.status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue