minecraft-src/net/minecraft/world/level/chunk/ChunkSource.java
2025-07-04 03:45:38 +03:00

65 lines
1.8 KiB
Java

package net.minecraft.world.level.chunk;
import it.unimi.dsi.fastutil.longs.LongSet;
import java.io.IOException;
import java.util.function.BooleanSupplier;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.chunk.status.ChunkStatus;
import net.minecraft.world.level.lighting.LevelLightEngine;
import org.jetbrains.annotations.Nullable;
public abstract class ChunkSource implements LightChunkGetter, AutoCloseable {
@Nullable
public LevelChunk getChunk(int chunkX, int chunkZ, boolean load) {
return (LevelChunk)this.getChunk(chunkX, chunkZ, ChunkStatus.FULL, load);
}
@Nullable
public LevelChunk getChunkNow(int chunkX, int chunkZ) {
return this.getChunk(chunkX, chunkZ, false);
}
@Nullable
@Override
public LightChunk getChunkForLighting(int chunkX, int chunkZ) {
return this.getChunk(chunkX, chunkZ, ChunkStatus.EMPTY, false);
}
/**
* @return {@code true} if a chunk is loaded at the provided position, without forcing a chunk load.
*/
public boolean hasChunk(int chunkX, int chunkZ) {
return this.getChunk(chunkX, chunkZ, ChunkStatus.FULL, false) != null;
}
@Nullable
public abstract ChunkAccess getChunk(int x, int z, ChunkStatus chunkStatus, boolean requireChunk);
public abstract void tick(BooleanSupplier hasTimeLeft, boolean tickChunks);
public void onSectionEmptinessChanged(int x, int y, int z, boolean isEmpty) {
}
/**
* @return A human-readable string representing data about this chunk source.
*/
public abstract String gatherStats();
public abstract int getLoadedChunksCount();
public void close() throws IOException {
}
public abstract LevelLightEngine getLightEngine();
public void setSpawnSettings(boolean spawnSettings) {
}
public boolean updateChunkForced(ChunkPos chunkPos, boolean add) {
return false;
}
public LongSet getForceLoadedChunks() {
return LongSet.of();
}
}