Fix chunk invalidation during generation forking

Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
TheMode 2022-06-30 23:12:42 +02:00
parent a04012d9bf
commit 9a28e6ba87
2 changed files with 8 additions and 2 deletions

View File

@ -47,8 +47,8 @@ public class DynamicChunk extends Chunk {
protected final Int2ObjectOpenHashMap<Block> tickableMap = new Int2ObjectOpenHashMap<>(0);
private long lastChange;
private final CachedPacket chunkCache = new CachedPacket(this::createChunkPacket);
private final CachedPacket lightCache = new CachedPacket(this::createLightPacket);
final CachedPacket chunkCache = new CachedPacket(this::createChunkPacket);
final CachedPacket lightCache = new CachedPacket(this::createLightPacket);
public DynamicChunk(@NotNull Instance instance, int chunkX, int chunkZ) {
super(instance, chunkX, chunkZ, true);

View File

@ -322,6 +322,12 @@ public class InstanceContainer extends Instance {
final Chunk forkChunk = start.chunkX() == chunkX && start.chunkZ() == chunkZ ? chunk : getChunkAt(start);
if (forkChunk != null) {
applyFork(forkChunk, sectionModifier);
// Update players
if (forkChunk instanceof DynamicChunk dynamicChunk) {
dynamicChunk.chunkCache.invalidate();
dynamicChunk.lightCache.invalidate();
}
forkChunk.sendChunk();
} else {
final long index = ChunkUtils.getChunkIndex(start);
this.generationForks.compute(index, (i, sectionModifiers) -> {