Class SectionStorage<R,P>
java.lang.Object
net.minecraft.world.level.chunk.storage.SectionStorage<R,P>
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
PoiManager
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final record -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final com.mojang.serialization.Codec<P> private final it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSetprivate final ChunkIOErrorReporterprotected final LevelHeightAccessorprivate final it.unimi.dsi.fastutil.longs.LongSetprivate final Object(package private) static final org.slf4j.Loggerprivate final it.unimi.dsi.fastutil.longs.Long2ObjectMap<CompletableFuture<Optional<SectionStorage.PackedChunk<P>>>> private final RegistryAccessprivate static final Stringprivate final SimpleRegionStorageprivate final BiFunction<P, Runnable, R> -
Constructor Summary
ConstructorsConstructorDescriptionSectionStorage(SimpleRegionStorage simpleRegionStorage, com.mojang.serialization.Codec<P> codec, Function<R, P> packer, BiFunction<P, Runnable, R> unpacker, Function<Runnable, R> factory, RegistryAccess registryAccess, ChunkIOErrorReporter errorReporter, LevelHeightAccessor levelHeightAccessor) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()voidvoidflushAll()get(long sectionKey) private static longprotected RgetOrCreate(long sectionKey) getOrLoad(long sectionKey) (package private) static intgetVersion(com.mojang.serialization.Dynamic<?> columnData) booleanhasWork()protected voidonSectionLoad(long sectionKey) protected booleanoutsideStoredRange(long sectionKey) voidNeo: Removes the data for the given chunk position.protected voidsetDirty(long sectionPos) protected voidtick(BooleanSupplier aheadOfTime) private CompletableFuture<Optional<SectionStorage.PackedChunk<P>>> private voidunpackChunk(ChunkPos pos) private voidunpackChunk(ChunkPos pos, SectionStorage.PackedChunk<P> packedChunk) private voidprivate voidwriteChunk(ChunkPos pos) private <T> com.mojang.serialization.Dynamic<T> writeChunk(ChunkPos pos, com.mojang.serialization.DynamicOps<T> ops)
-
Field Details
-
LOGGER
static final org.slf4j.Logger LOGGER -
SECTIONS_TAG
- See Also:
-
simpleRegionStorage
-
storage
-
dirtyChunks
private final it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSet dirtyChunks -
codec
-
packer
-
unpacker
-
factory
-
registryAccess
-
errorReporter
-
levelHeightAccessor
-
loadedChunks
private final it.unimi.dsi.fastutil.longs.LongSet loadedChunks -
pendingLoads
private final it.unimi.dsi.fastutil.longs.Long2ObjectMap<CompletableFuture<Optional<SectionStorage.PackedChunk<P>>>> pendingLoads -
loadLock
-
-
Constructor Details
-
SectionStorage
public SectionStorage(SimpleRegionStorage simpleRegionStorage, com.mojang.serialization.Codec<P> codec, Function<R, P> packer, BiFunction<P, Runnable, R> unpacker, Function<Runnable, R> factory, RegistryAccess registryAccess, ChunkIOErrorReporter errorReporter, LevelHeightAccessor levelHeightAccessor)
-
-
Method Details
-
tick
-
unpackPendingLoads
private void unpackPendingLoads() -
flushAll
public void flushAll() -
hasWork
public boolean hasWork() -
get
-
getOrLoad
-
outsideStoredRange
protected boolean outsideStoredRange(long sectionKey) -
getOrCreate
-
prefetch
-
unpackChunk
-
tryRead
-
unpackChunk
-
writeChunk
-
writeChunk
private <T> com.mojang.serialization.Dynamic<T> writeChunk(ChunkPos pos, com.mojang.serialization.DynamicOps<T> ops) -
getKey
-
onSectionLoad
protected void onSectionLoad(long sectionKey) -
setDirty
protected void setDirty(long sectionPos) -
getVersion
static int getVersion(com.mojang.serialization.Dynamic<?> columnData) -
flush
-
close
- Specified by:
closein interfaceAutoCloseable- Throws:
IOException
-
remove
Neo: Removes the data for the given chunk position. See PR #937
-