mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-03 00:17:15 +00:00
set chunk status to full AFTER generation
This commit is contained in:
parent
22622f6e8a
commit
6e84d38680
@ -7,4 +7,6 @@ public interface SerializableChunk extends TerrainChunk {
|
||||
Position2 getPos();
|
||||
|
||||
Object serialize();
|
||||
|
||||
void mark();
|
||||
}
|
||||
|
@ -169,6 +169,7 @@ public class IrisHeadless {
|
||||
biomes.apply();
|
||||
|
||||
storage.fillBiomes(chunk, ctx);
|
||||
chunk.mark();
|
||||
|
||||
long key = Cache.key(x >> 5, z >> 5);
|
||||
regions.computeIfAbsent(key, Region::new)
|
||||
@ -255,7 +256,7 @@ public class IrisHeadless {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try (IRegion region = storage.getRegion(x, z, false)){
|
||||
try (IRegion region = storage.getRegion(x, z, false)) {
|
||||
assert region != null;
|
||||
|
||||
for (var chunk : chunks) {
|
||||
@ -269,7 +270,8 @@ public class IrisHeadless {
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Iris.error("Failed to load region file " + x + ", " + z);
|
||||
Iris.reportError(e);
|
||||
e.printStackTrace();
|
||||
loadedChunks.addAndGet(-chunks.size());
|
||||
}
|
||||
|
||||
regions.remove(key);
|
||||
|
@ -12,7 +12,8 @@ import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ChunkStatus;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -27,11 +28,11 @@ import static com.volmit.iris.core.nms.v1_20_R1.headless.RegionStorage.registryA
|
||||
|
||||
@Data
|
||||
public final class DirectTerrainChunk implements SerializableChunk {
|
||||
private final ChunkAccess access;
|
||||
private final ProtoChunk access;
|
||||
private final int minHeight, maxHeight;
|
||||
private final Registry<net.minecraft.world.level.biome.Biome> biomes;
|
||||
|
||||
public DirectTerrainChunk(ChunkAccess access) {
|
||||
public DirectTerrainChunk(ProtoChunk access) {
|
||||
this.access = access;
|
||||
this.minHeight = access.getMinBuildHeight();
|
||||
this.maxHeight = access.getMaxBuildHeight();
|
||||
@ -206,4 +207,9 @@ public final class DirectTerrainChunk implements SerializableChunk {
|
||||
public Object serialize() {
|
||||
return RegionStorage.serialize(access);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark() {
|
||||
access.setStatus(ChunkStatus.FULL);
|
||||
}
|
||||
}
|
@ -141,9 +141,7 @@ public class RegionStorage implements IRegionStorage, LevelHeightAccessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public SerializableChunk createChunk(int x, int z) {
|
||||
ProtoChunk chunk = new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null);
|
||||
chunk.setStatus(ChunkStatus.FULL);
|
||||
return new DirectTerrainChunk(chunk);
|
||||
return new DirectTerrainChunk(new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,7 +11,8 @@ import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ChunkStatus;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -24,10 +25,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Data
|
||||
public final class DirectTerrainChunk implements SerializableChunk {
|
||||
private final ChunkAccess access;
|
||||
private final ProtoChunk access;
|
||||
private final int minHeight, maxHeight;
|
||||
|
||||
public DirectTerrainChunk(ChunkAccess access) {
|
||||
public DirectTerrainChunk(ProtoChunk access) {
|
||||
this.access = access;
|
||||
this.minHeight = access.getMinBuildHeight();
|
||||
this.maxHeight = access.getMaxBuildHeight();
|
||||
@ -201,4 +202,9 @@ public final class DirectTerrainChunk implements SerializableChunk {
|
||||
public Object serialize() {
|
||||
return RegionStorage.serialize(access);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark() {
|
||||
access.setStatus(ChunkStatus.FULL);
|
||||
}
|
||||
}
|
@ -140,9 +140,7 @@ public class RegionStorage implements IRegionStorage, LevelHeightAccessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public SerializableChunk createChunk(int x, int z) {
|
||||
ProtoChunk chunk = new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null);
|
||||
chunk.setStatus(ChunkStatus.FULL);
|
||||
return new DirectTerrainChunk(chunk);
|
||||
return new DirectTerrainChunk(new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,7 +11,8 @@ import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ChunkStatus;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -25,10 +26,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Data
|
||||
public final class DirectTerrainChunk implements SerializableChunk {
|
||||
private final ChunkAccess access;
|
||||
private final ProtoChunk access;
|
||||
private final int minHeight, maxHeight;
|
||||
|
||||
public DirectTerrainChunk(ChunkAccess access) {
|
||||
public DirectTerrainChunk(ProtoChunk access) {
|
||||
this.access = access;
|
||||
this.minHeight = access.getMinBuildHeight();
|
||||
this.maxHeight = access.getMaxBuildHeight();
|
||||
@ -202,4 +203,9 @@ public final class DirectTerrainChunk implements SerializableChunk {
|
||||
public Object serialize() {
|
||||
return RegionStorage.serialize(access);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark() {
|
||||
access.setStatus(ChunkStatus.FULL);
|
||||
}
|
||||
}
|
@ -140,9 +140,7 @@ public class RegionStorage implements IRegionStorage, LevelHeightAccessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public SerializableChunk createChunk(int x, int z) {
|
||||
ProtoChunk chunk = new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null);
|
||||
chunk.setStatus(ChunkStatus.FULL);
|
||||
return new DirectTerrainChunk(chunk);
|
||||
return new DirectTerrainChunk(new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,7 +11,8 @@ import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -25,10 +26,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Data
|
||||
public final class DirectTerrainChunk implements SerializableChunk {
|
||||
private final ChunkAccess access;
|
||||
private final ProtoChunk access;
|
||||
private final int minHeight, maxHeight;
|
||||
|
||||
public DirectTerrainChunk(ChunkAccess access) {
|
||||
public DirectTerrainChunk(ProtoChunk access) {
|
||||
this.access = access;
|
||||
this.minHeight = access.getMinBuildHeight();
|
||||
this.maxHeight = access.getMaxBuildHeight();
|
||||
@ -202,4 +203,9 @@ public final class DirectTerrainChunk implements SerializableChunk {
|
||||
public Object serialize() {
|
||||
return RegionStorage.serialize(access);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark() {
|
||||
access.setStatus(ChunkStatus.FULL);
|
||||
}
|
||||
}
|
@ -30,7 +30,6 @@ import net.minecraft.world.level.LevelHeightAccessor;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.biome.Biomes;
|
||||
import net.minecraft.world.level.chunk.*;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import net.minecraft.world.level.chunk.status.ChunkType;
|
||||
import net.minecraft.world.level.levelgen.BelowZeroRetrogen;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
||||
@ -141,9 +140,7 @@ public class RegionStorage implements IRegionStorage, LevelHeightAccessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public SerializableChunk createChunk(int x, int z) {
|
||||
ProtoChunk chunk = new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null);
|
||||
chunk.setStatus(ChunkStatus.FULL);
|
||||
return new DirectTerrainChunk(chunk);
|
||||
return new DirectTerrainChunk(new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,7 +11,8 @@ import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -25,10 +26,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Data
|
||||
public final class DirectTerrainChunk implements SerializableChunk {
|
||||
private final ChunkAccess access;
|
||||
private final ProtoChunk access;
|
||||
private final int minHeight, maxHeight;
|
||||
|
||||
public DirectTerrainChunk(ChunkAccess access) {
|
||||
public DirectTerrainChunk(ProtoChunk access) {
|
||||
this.access = access;
|
||||
this.minHeight = access.getMinBuildHeight();
|
||||
this.maxHeight = access.getMaxBuildHeight();
|
||||
@ -202,4 +203,9 @@ public final class DirectTerrainChunk implements SerializableChunk {
|
||||
public Object serialize() {
|
||||
return RegionStorage.serialize(access);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark() {
|
||||
access.setPersistedStatus(ChunkStatus.FULL);
|
||||
}
|
||||
}
|
@ -27,7 +27,6 @@ import net.minecraft.world.level.LevelHeightAccessor;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.biome.Biomes;
|
||||
import net.minecraft.world.level.chunk.*;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import net.minecraft.world.level.chunk.status.ChunkType;
|
||||
import net.minecraft.world.level.levelgen.BelowZeroRetrogen;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
||||
@ -137,9 +136,7 @@ public class RegionStorage implements IRegionStorage, LevelHeightAccessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public SerializableChunk createChunk(int x, int z) {
|
||||
ProtoChunk chunk = new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null);
|
||||
chunk.setPersistedStatus(ChunkStatus.FULL);
|
||||
return new DirectTerrainChunk(chunk);
|
||||
return new DirectTerrainChunk(new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().registryOrThrow(Registries.BIOME), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,7 +11,8 @@ import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -25,10 +26,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Data
|
||||
public final class DirectTerrainChunk implements SerializableChunk {
|
||||
private final ChunkAccess access;
|
||||
private final ProtoChunk access;
|
||||
private final int minHeight, maxHeight;
|
||||
|
||||
public DirectTerrainChunk(ChunkAccess access) {
|
||||
public DirectTerrainChunk(ProtoChunk access) {
|
||||
this.access = access;
|
||||
this.minHeight = access.getMinY();
|
||||
this.maxHeight = access.getMaxY();
|
||||
@ -202,4 +203,9 @@ public final class DirectTerrainChunk implements SerializableChunk {
|
||||
public Object serialize() {
|
||||
return RegionStorage.serialize(access);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark() {
|
||||
access.setPersistedStatus(ChunkStatus.FULL);
|
||||
}
|
||||
}
|
@ -30,7 +30,6 @@ import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.LevelChunkSection;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import net.minecraft.world.level.chunk.UpgradeData;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import net.minecraft.world.level.chunk.storage.SerializableChunkData;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
import net.minecraft.world.level.levelgen.blending.BlendingData;
|
||||
@ -135,9 +134,7 @@ public class RegionStorage implements IRegionStorage, LevelHeightAccessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public SerializableChunk createChunk(int x, int z) {
|
||||
ProtoChunk chunk = new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().lookupOrThrow(Registries.BIOME), null);
|
||||
chunk.setPersistedStatus(ChunkStatus.FULL);
|
||||
return new DirectTerrainChunk(chunk);
|
||||
return new DirectTerrainChunk(new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().lookupOrThrow(Registries.BIOME), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,7 +11,8 @@ import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -25,10 +26,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Data
|
||||
public final class DirectTerrainChunk implements SerializableChunk {
|
||||
private final ChunkAccess access;
|
||||
private final ProtoChunk access;
|
||||
private final int minHeight, maxHeight;
|
||||
|
||||
public DirectTerrainChunk(ChunkAccess access) {
|
||||
public DirectTerrainChunk(ProtoChunk access) {
|
||||
this.access = access;
|
||||
this.minHeight = access.getMinY();
|
||||
this.maxHeight = access.getMaxY();
|
||||
@ -202,4 +203,9 @@ public final class DirectTerrainChunk implements SerializableChunk {
|
||||
public Object serialize() {
|
||||
return RegionStorage.serialize(access);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark() {
|
||||
access.setPersistedStatus(ChunkStatus.FULL);
|
||||
}
|
||||
}
|
@ -30,7 +30,6 @@ import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.LevelChunkSection;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import net.minecraft.world.level.chunk.UpgradeData;
|
||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||
import net.minecraft.world.level.chunk.storage.SerializableChunkData;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
import net.minecraft.world.level.levelgen.blending.BlendingData;
|
||||
@ -135,9 +134,7 @@ public class RegionStorage implements IRegionStorage, LevelHeightAccessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public SerializableChunk createChunk(int x, int z) {
|
||||
ProtoChunk chunk = new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().lookupOrThrow(Registries.BIOME), null);
|
||||
chunk.setPersistedStatus(ChunkStatus.FULL);
|
||||
return new DirectTerrainChunk(chunk);
|
||||
return new DirectTerrainChunk(new ProtoChunk(new ChunkPos(x, z), UpgradeData.EMPTY, this, registryAccess().lookupOrThrow(Registries.BIOME), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
x
Reference in New Issue
Block a user