minerender 2.1.0-alpha.119 → 2.1.0-alpha.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3579,6 +3579,23 @@ declare class ChunkData {
3579
3579
  private static validateIndex;
3580
3580
  }
3581
3581
 
3582
+ /** Saved light for a 16³ section. Each channel packs two levels per byte, with the even index in the low nibble. */
3583
+ interface SectionLightData {
3584
+ /** 2,048 bytes in x + 16z + 256y order. An omitted channel is zero. */
3585
+ block?: Uint8Array;
3586
+ /** 2,048 bytes in x + 16z + 256y order. An omitted channel is zero. */
3587
+ sky?: Uint8Array;
3588
+ }
3589
+ /** Saved light levels from 0 to 15, before brightness or directional shading. */
3590
+ interface SavedLightSample {
3591
+ block: number;
3592
+ sky: number;
3593
+ }
3594
+ /** Validates and copies saved channels so callers can reuse their input buffers. */
3595
+ declare function copySectionLight(light: SectionLightData): SectionLightData;
3596
+ /** Reads a cell in x + 16z + 256y order. Missing section data remains distinct from saved darkness. */
3597
+ declare function sampleSectionLight(light: SectionLightData | undefined, index: number): SavedLightSample | undefined;
3598
+
3582
3599
  type RegionInput = Uint8Array | ArrayBuffer;
3583
3600
  /** Reads `c.<x>.<z>.mcc` at absolute chunk coordinates, or returns `undefined` when the file is missing. */
3584
3601
  type AnvilExternalChunkReader = (x: number, z: number, signal?: AbortSignal) => Promise<Uint8Array | ArrayBuffer | undefined>;
@@ -3608,6 +3625,8 @@ interface AnvilChunk {
3608
3625
  x: number;
3609
3626
  z: number;
3610
3627
  dataVersion?: number;
3628
+ /** Whether the save marks its lighting as complete. Unknown for numeric legacy chunks without a validity flag. */
3629
+ lightValid?: boolean;
3611
3630
  /** DataVersion of the separate entity-region record; `dataVersion` belongs to the terrain. */
3612
3631
  entityDataVersion?: number;
3613
3632
  sections: {
@@ -3615,6 +3634,8 @@ interface AnvilChunk {
3615
3634
  data: ChunkData;
3616
3635
  /** 64 saved biome IDs, indexed by x + z * 4 + y * 16 at 4-block resolution. */
3617
3636
  biomes?: readonly string[];
3637
+ /** Saved block and sky light, including light-only sections outside the terrain. */
3638
+ light?: SectionLightData;
3618
3639
  }[];
3619
3640
  entities?: MultiBlockEntity[];
3620
3641
  }
@@ -3656,6 +3677,7 @@ declare class AnvilParser {
3656
3677
  private static readChunk;
3657
3678
  private static numericSection;
3658
3679
  private static entities;
3680
+ private static light;
3659
3681
  private static biomes;
3660
3682
  private static compounds;
3661
3683
  private static integer;
@@ -3714,6 +3736,78 @@ interface BlockInfo<SectionMeshing extends boolean = false> {
3714
3736
  object: SectionMeshing extends false ? BlockObject : BlockObject | undefined;
3715
3737
  }
3716
3738
 
3739
+ /** Static model geometry as quads: four vertices per quad, in quad order. */
3740
+ interface SectionTemplateData {
3741
+ quads: number;
3742
+ positions: Float32Array;
3743
+ normals: Float32Array;
3744
+ uvs: Float32Array;
3745
+ uvBounds: Float32Array;
3746
+ colors: Float32Array;
3747
+ indices: Uint16Array;
3748
+ cullFaces: Uint8Array;
3749
+ atlas: number;
3750
+ layer: number;
3751
+ }
3752
+ /** The pixel dimensions and animation state of a source atlas. */
3753
+ interface SectionAtlasSize {
3754
+ width: number;
3755
+ height: number;
3756
+ animated: boolean;
3757
+ }
3758
+ /** One fluid kind's sprite rectangles in atlas pixels and its linear-light vertex tint. */
3759
+ interface SectionFluidKind {
3760
+ atlas: number;
3761
+ still: [x: number, y: number, width: number, height: number];
3762
+ flow: [x: number, y: number, width: number, height: number];
3763
+ tint: [r: number, g: number, b: number];
3764
+ }
3765
+ /** Fluid cells of the section plus a one-cell shell, 18×18×18, x fastest, then z, then y. */
3766
+ interface SectionFluidInput {
3767
+ /** Bit 128 marks a surface rendered elsewhere; the cell still supplies neighbor fluid samples. */
3768
+ cells: Uint8Array;
3769
+ /** Linear RGB per section cell, indexed by (x + 16z + 256y) * 3. Omission uses the water kind's tint. */
3770
+ waterTints?: Float32Array;
3771
+ water?: SectionFluidKind;
3772
+ lava?: SectionFluidKind;
3773
+ }
3774
+ /** Section placements and their shared templates, ready for geometry building. */
3775
+ interface SectionGeometryInput {
3776
+ count: number;
3777
+ indices: Uint16Array;
3778
+ templates: Uint16Array;
3779
+ cullMasks: Uint8Array;
3780
+ templateData: SectionTemplateData[];
3781
+ atlases: SectionAtlasSize[];
3782
+ maxAtlasSize: number;
3783
+ fluids?: SectionFluidInput;
3784
+ /** Saved brightness levels for an 18×18×18 neighborhood; 255 means unknown/full brightness. */
3785
+ light?: Uint8Array;
3786
+ /** Minimum brightness for known light levels, from 0 to 1. */
3787
+ ambientLight?: number;
3788
+ }
3789
+ /** Merged quads and source-atlas placements for one atlas page. */
3790
+ interface SectionGeometryPage {
3791
+ layer: number;
3792
+ width: number;
3793
+ height: number;
3794
+ placements: {
3795
+ atlas: number;
3796
+ x: number;
3797
+ y: number;
3798
+ }[];
3799
+ positions: Float32Array;
3800
+ normals: Float32Array;
3801
+ uvs: Float32Array;
3802
+ uvBounds: Float32Array;
3803
+ colors: Float32Array;
3804
+ indices: Uint32Array;
3805
+ }
3806
+ /** Builds section-local geometry from visible quads, with bounded atlas pages per layer. */
3807
+ declare function buildSectionGeometry(input: SectionGeometryInput): SectionGeometryPage[];
3808
+ /** Returns the buffers behind each page's typed arrays for transfer to another thread. */
3809
+ declare function sectionGeometryTransferables(pages: readonly SectionGeometryPage[]): ArrayBuffer[];
3810
+
3717
3811
  /** Shared quad geometry and atlas data prepared for section merging. */
3718
3812
  interface SectionMeshTemplate {
3719
3813
  geometry: BufferGeometry;
@@ -3740,9 +3834,9 @@ interface SectionFluids {
3740
3834
  declare class SectionMesh extends Group {
3741
3835
  private readonly ownedMeshes;
3742
3836
  /** Builds section-local meshes from visible quads. `maxAtlasSize` limits each atlas dimension in pixels. */
3743
- static build(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids): SectionMesh;
3837
+ static build(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids, lighting?: Pick<SectionGeometryInput, "light" | "ambientLight">): SectionMesh;
3744
3838
  /** Builds section-local meshes in a browser worker when available, with synchronous fallback. */
3745
- static buildAsync(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids): Promise<SectionMesh>;
3839
+ static buildAsync(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids, lighting?: Pick<SectionGeometryInput, "light" | "ambientLight">): Promise<SectionMesh>;
3746
3840
  private static fromPages;
3747
3841
  dispose(): void;
3748
3842
  }
@@ -3781,6 +3875,9 @@ declare class Chunk<SectionMeshing extends boolean = false> {
3781
3875
  private readonly neighborCell?;
3782
3876
  private readonly biomeAt?;
3783
3877
  private readonly onBiomesChanged?;
3878
+ private readonly lightAt?;
3879
+ private readonly onLightCleared?;
3880
+ private readonly ambientLight;
3784
3881
  readonly scene: MineRenderScene;
3785
3882
  readonly x: number;
3786
3883
  readonly y: number;
@@ -3796,7 +3893,7 @@ declare class Chunk<SectionMeshing extends boolean = false> {
3796
3893
  private sectionMesh?;
3797
3894
  private meshDirty;
3798
3895
  private meshGeneration;
3799
- constructor(scene: MineRenderScene, x: number, y: number, z: number, onBlocksChanged?: ((positions: Vector3[]) => Promise<void>) | undefined, sectionModels?: SectionModels | undefined, neighborCell?: ((x: number, y: number, z: number) => number) | undefined, biomeAt?: ((x: number, y: number, z: number) => Maybe<string>) | undefined, onBiomesChanged?: ((biomes?: readonly string[]) => Promise<void>) | undefined);
3896
+ constructor(scene: MineRenderScene, x: number, y: number, z: number, onBlocksChanged?: ((positions: Vector3[]) => Promise<void>) | undefined, sectionModels?: SectionModels | undefined, neighborCell?: ((x: number, y: number, z: number) => number) | undefined, biomeAt?: ((x: number, y: number, z: number) => Maybe<string>) | undefined, onBiomesChanged?: ((biomes?: readonly string[]) => Promise<void>) | undefined, lightAt?: ((x: number, y: number, z: number) => number) | undefined, onLightCleared?: (() => Promise<void>) | undefined, ambientLight?: number);
3800
3897
  getBlockAt(x: number, y: number, z: number): Maybe<BlockInfo<SectionMeshing>>;
3801
3898
  getBlockAt(pos: Vector3): Maybe<BlockInfo<SectionMeshing>>;
3802
3899
  getBlockAt(pos: TripleArray): Maybe<BlockInfo<SectionMeshing>>;
@@ -3826,6 +3923,8 @@ declare class Chunk<SectionMeshing extends boolean = false> {
3826
3923
  /** Replaces every cell from parsed section data. The caller refreshes neighbor culling. */
3827
3924
  placeSection(data: ChunkData): Promise<void>;
3828
3925
  private positionAt;
3926
+ /** Refreshes saved lighting after adjacent columns load or unload, including columns with only light data. */
3927
+ refreshLight(indices?: Iterable<number>): Promise<void>;
3829
3928
  private biomePosition;
3830
3929
  private resolveState;
3831
3930
  private setWaterTint;
@@ -3867,6 +3966,11 @@ declare class MineRenderWorld<SectionMeshing extends boolean = false> {
3867
3966
  readonly scene: MineRenderScene;
3868
3967
  private readonly _chunks;
3869
3968
  private readonly biomes;
3969
+ private readonly light;
3970
+ private readonly lightValidity;
3971
+ private readonly highestSkySection;
3972
+ private readonly savedLighting;
3973
+ private readonly ambientLight;
3870
3974
  private readonly sectionModels?;
3871
3975
  private readonly entities?;
3872
3976
  private readonly pendingCulling;
@@ -3880,6 +3984,14 @@ declare class MineRenderWorld<SectionMeshing extends boolean = false> {
3880
3984
  getBiomeAt(x: number, y: number, z: number): Maybe<string>;
3881
3985
  getBiomeAt(pos: Vector3): Maybe<string>;
3882
3986
  getBiomeAt(pos: TripleArray): Maybe<string>;
3987
+ /**
3988
+ * Returns saved light at integer world block coordinates, including data marked invalid by the save.
3989
+ * Sky light is 15 above a column's highest saved sky-light array.
3990
+ */
3991
+ getLightAt(x: number, y: number, z: number): Maybe<SavedLightSample>;
3992
+ getLightAt(pos: Vector3): Maybe<SavedLightSample>;
3993
+ getLightAt(pos: TripleArray): Maybe<SavedLightSample>;
3994
+ private lightLevelAt;
3883
3995
  /**
3884
3996
  * Places or replaces a block and refreshes neighboring faces.
3885
3997
  * Pass `undefined` or an air block to remove the block at these world block coordinates.
@@ -3905,7 +4017,7 @@ declare class MineRenderWorld<SectionMeshing extends boolean = false> {
3905
4017
  placeMultiBlock(multiblock: MultiBlockStructure, useBatches?: boolean, executor?: BatchedExecutor): Promise<void>;
3906
4018
  private placeBlocks;
3907
4019
  private placeChunkGroups;
3908
- /** Replaces a chunk column's blocks and biome samples and, with `renderEntities`, its supported saved mobs. */
4020
+ /** Replaces a chunk column's blocks, biomes, and saved light and, with `renderEntities`, its supported saved mobs. */
3909
4021
  placeChunk(chunk: AnvilChunk, executor?: BatchedExecutor): Promise<void>;
3910
4022
  /**
3911
4023
  * Removes blocks and owned entities at chunk-column coordinates, then refreshes neighboring faces and fluids.
@@ -3933,78 +4045,14 @@ interface MineRenderWorldOptions<SectionMeshing extends boolean = boolean> {
3933
4045
  renderEntities?: boolean;
3934
4046
  /** Merge static opaque cubes into section meshes. Merged blocks have no individual object. */
3935
4047
  sectionMeshing?: SectionMeshing;
4048
+ /** Shade blocks and fluids with saved sky/block light. Missing or invalid data keeps preview brightness. Defaults to false. Requires `sectionMeshing`. */
4049
+ savedLighting?: boolean;
4050
+ /** Minimum brightness for saved lighting, from 0 to 1, like a dimension type's `ambient_light`. Defaults to 0. */
4051
+ ambientLight?: number;
3936
4052
  /** Maximum width and height of each section atlas page, in pixels. */
3937
4053
  maxAtlasSize?: number;
3938
4054
  }
3939
4055
 
3940
- /** Static model geometry as quads: four vertices per quad, in quad order. */
3941
- interface SectionTemplateData {
3942
- quads: number;
3943
- positions: Float32Array;
3944
- normals: Float32Array;
3945
- uvs: Float32Array;
3946
- uvBounds: Float32Array;
3947
- colors: Float32Array;
3948
- indices: Uint16Array;
3949
- cullFaces: Uint8Array;
3950
- atlas: number;
3951
- layer: number;
3952
- }
3953
- /** The pixel dimensions and animation state of a source atlas. */
3954
- interface SectionAtlasSize {
3955
- width: number;
3956
- height: number;
3957
- animated: boolean;
3958
- }
3959
- /** One fluid kind's sprite rectangles in atlas pixels and its linear-light vertex tint. */
3960
- interface SectionFluidKind {
3961
- atlas: number;
3962
- still: [x: number, y: number, width: number, height: number];
3963
- flow: [x: number, y: number, width: number, height: number];
3964
- tint: [r: number, g: number, b: number];
3965
- }
3966
- /** Fluid cells of the section plus a one-cell shell, 18×18×18, x fastest, then z, then y. */
3967
- interface SectionFluidInput {
3968
- /** Bit 128 marks a surface rendered elsewhere; the cell still supplies neighbor fluid samples. */
3969
- cells: Uint8Array;
3970
- /** Linear RGB per section cell, indexed by (x + 16z + 256y) * 3. Omission uses the water kind's tint. */
3971
- waterTints?: Float32Array;
3972
- water?: SectionFluidKind;
3973
- lava?: SectionFluidKind;
3974
- }
3975
- /** Section placements and their shared templates, ready for geometry building. */
3976
- interface SectionGeometryInput {
3977
- count: number;
3978
- indices: Uint16Array;
3979
- templates: Uint16Array;
3980
- cullMasks: Uint8Array;
3981
- templateData: SectionTemplateData[];
3982
- atlases: SectionAtlasSize[];
3983
- maxAtlasSize: number;
3984
- fluids?: SectionFluidInput;
3985
- }
3986
- /** Merged quads and source-atlas placements for one atlas page. */
3987
- interface SectionGeometryPage {
3988
- layer: number;
3989
- width: number;
3990
- height: number;
3991
- placements: {
3992
- atlas: number;
3993
- x: number;
3994
- y: number;
3995
- }[];
3996
- positions: Float32Array;
3997
- normals: Float32Array;
3998
- uvs: Float32Array;
3999
- uvBounds: Float32Array;
4000
- colors: Float32Array;
4001
- indices: Uint32Array;
4002
- }
4003
- /** Builds section-local geometry from visible quads, with bounded atlas pages per layer. */
4004
- declare function buildSectionGeometry(input: SectionGeometryInput): SectionGeometryPage[];
4005
- /** Returns the buffers behind each page's typed arrays for transfer to another thread. */
4006
- declare function sectionGeometryTransferables(pages: readonly SectionGeometryPage[]): ArrayBuffer[];
4007
-
4008
4056
  /** Runs section geometry builds in the environment's shared worker. */
4009
4057
  declare class SectionWorker {
4010
4058
  private worker;
@@ -4162,4 +4210,4 @@ declare class NodeRenderer extends Renderer {
4162
4210
  dispose(): void;
4163
4211
  }
4164
4212
 
4165
- export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, type AnvilEntityChunk, type AnvilExternalChunkReader, type AnvilParseOptions, AnvilParser, type AnvilRegion, type AnvilRegionReader, AnvilWorldSource, type AnvilWorldSourceOptions, ArchiveAssetSource, type ArchiveAssetSourceOptions, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, type BannerPattern, type BannerPatternDraw, BannerPatterns, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Biome, type BiomeColorKind, Biomes, type BitmapFont, type BitmapGlyph, type Block, BlockEntities, type BlockEntityEntry, type BlockEntityIndex, type BlockEntityPart, type BlockEntityRotation, type BlockFluidState, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, BlockStateResolver, type BlockStateVariant, type BlockStateVariants, BlockStates, BlockTints, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, Colormaps, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsMode, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, DYE_COLORS, type DebugOptions, type DecoratedPotSide, DecoratedPots, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type DyeColor, ENTITY_ANIMATION_CHANNELS, type ElementFace, type ElementRotation, Entities, type EntityAnimation, type EntityAnimationBone, type EntityAnimationChannel, type EntityAnimationFile, type EntityAnimationKeyframe, type EntityAnimationOptions, EntityAnimationPlayer, type EntityAnimationPose, type EntityLayer, type EntityModel, type EntityModelCube, type EntityModelFile, type EntityModelLayer, type EntityModelOptions, type EntityModelPart, type EntityModelPass, EntityObject, type EntityObjectOptions, type EntityRenderMode, type EntityTransformOp, Env, type EnvProvider, type ExtractableImageData, type FluidKind, FluidModelObject, type FluidQuads, type FluidRules, type FluidSample, type FluidSampler, type FlyAction, FlyControls, type FlyControlsEventMap, Fonts, type FrameCallback, type FromTo, GUI_CONTAINER_LAYOUTS, Geometries, type GuiBookButtonState, type GuiBookOptions, type GuiBossBarColor, type GuiBossBarOptions, type GuiContainerType, GuiHelper, type GuiItemLayer, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, type GuiRecipe, type GuiRecipeIngredient, type GuiRecipeOptions, type GuiSpriteScaling, type GuiText, type GuiTextLayer, type GuiTextLayout, type GuiTextOptions, type GuiTextRun, type GuiTextStyle, type GuiTextureLayer, type GuiTooltipOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, ItemDefaults, ItemGlint, type ItemModel, type ItemModelContext, type ItemModelTextures, type ItemTintColor, type ItemTintSource, ItemTints, type ListAsset, LitematicaParser, type LitematicaRegion, type LitematicaStructure, type LoadedSceneDocument, type LoadedSceneObject, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderData, type MineRenderDataManifest, type MineRenderDatasets, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MineRenderWorldOptions, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, ModelCulling, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, ModelTextures, Models, type MultiBlockBlock, type MultiBlockEntity, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, type NodeImageOptions, NodeRenderer, type NodeRendererOptions, OrbitControls, type PackFormat, PackFormats, PackMetadata, PersistentCache, PlayerHeadTextures, type PositionedGuiGlyph, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererControls, type RendererFrame, type RendererOptions, type RendererSurface, type RequestConfig, RequestError, type RequestResponse, Requests, type ResolvedBlockEntity, type ResolvedMineRenderData, type ResponseParser, SCENE_DOCUMENT_MAX_BYTES, SKIN_PARTS, type SceneBlockDefinition, type SceneDocument, SceneDocumentLoader, type SceneEntityDefinition, SceneExporter, type SceneGLTFExportOptions, type SceneGuiDefinition, type SceneGuiLayer, SceneInspector, type SceneItemContext, type SceneModelDefinition, SceneObject, type SceneObjectDefinition, type SceneObjectDefinitionBase, type SceneObjectOptions, type SceneSkinDefinition, type SceneSkinPosePart, SceneStats, SceneStatsDisplay, SchematicParser, type SchematicParserOptions, type SectionAtlasSize, type SectionFluidInput, type SectionFluidKind, type SectionFluids, type SectionGeometryInput, type SectionGeometryPage, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type SectionTemplateData, SectionWorker, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type SpecialItemPart, type SpecialItemRenderer, SpecialItems, SpongeSchematicParser, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, type VideoExportOptions, VideoExporter, type WorldChunkSource, WorldStreamer, type WorldStreamerOptions, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, buildFluidQuads, buildSectionGeometry, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createFluidGeometry, createGuiTextGeometry, createGuiTextureGeometry, createImage, decodeSceneDocument, encodeSceneDocument, entityAnimationTime, estimateBytesUsed, fluidKindOf, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isFlyControls, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isResourceLocation, isSceneObject, isTransformable, isTripleArray, isVector3, layoutGuiText, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, parseSceneDocument, prefix, registerNodeEnv, resolveBlockFluidState, resolveLegacyBlock, resolveLegacyBlockState, sampleEntityAnimation, sampleEntityKeyframes, sampleFluid, sectionGeometryTransferables, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas, yieldToEventLoop };
4213
+ export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, type AnvilEntityChunk, type AnvilExternalChunkReader, type AnvilParseOptions, AnvilParser, type AnvilRegion, type AnvilRegionReader, AnvilWorldSource, type AnvilWorldSourceOptions, ArchiveAssetSource, type ArchiveAssetSourceOptions, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, type BannerPattern, type BannerPatternDraw, BannerPatterns, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Biome, type BiomeColorKind, Biomes, type BitmapFont, type BitmapGlyph, type Block, BlockEntities, type BlockEntityEntry, type BlockEntityIndex, type BlockEntityPart, type BlockEntityRotation, type BlockFluidState, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, BlockStateResolver, type BlockStateVariant, type BlockStateVariants, BlockStates, BlockTints, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, Colormaps, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsMode, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, DYE_COLORS, type DebugOptions, type DecoratedPotSide, DecoratedPots, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type DyeColor, ENTITY_ANIMATION_CHANNELS, type ElementFace, type ElementRotation, Entities, type EntityAnimation, type EntityAnimationBone, type EntityAnimationChannel, type EntityAnimationFile, type EntityAnimationKeyframe, type EntityAnimationOptions, EntityAnimationPlayer, type EntityAnimationPose, type EntityLayer, type EntityModel, type EntityModelCube, type EntityModelFile, type EntityModelLayer, type EntityModelOptions, type EntityModelPart, type EntityModelPass, EntityObject, type EntityObjectOptions, type EntityRenderMode, type EntityTransformOp, Env, type EnvProvider, type ExtractableImageData, type FluidKind, FluidModelObject, type FluidQuads, type FluidRules, type FluidSample, type FluidSampler, type FlyAction, FlyControls, type FlyControlsEventMap, Fonts, type FrameCallback, type FromTo, GUI_CONTAINER_LAYOUTS, Geometries, type GuiBookButtonState, type GuiBookOptions, type GuiBossBarColor, type GuiBossBarOptions, type GuiContainerType, GuiHelper, type GuiItemLayer, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, type GuiRecipe, type GuiRecipeIngredient, type GuiRecipeOptions, type GuiSpriteScaling, type GuiText, type GuiTextLayer, type GuiTextLayout, type GuiTextOptions, type GuiTextRun, type GuiTextStyle, type GuiTextureLayer, type GuiTooltipOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, ItemDefaults, ItemGlint, type ItemModel, type ItemModelContext, type ItemModelTextures, type ItemTintColor, type ItemTintSource, ItemTints, type ListAsset, LitematicaParser, type LitematicaRegion, type LitematicaStructure, type LoadedSceneDocument, type LoadedSceneObject, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderData, type MineRenderDataManifest, type MineRenderDatasets, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MineRenderWorldOptions, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, ModelCulling, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, ModelTextures, Models, type MultiBlockBlock, type MultiBlockEntity, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, type NodeImageOptions, NodeRenderer, type NodeRendererOptions, OrbitControls, type PackFormat, PackFormats, PackMetadata, PersistentCache, PlayerHeadTextures, type PositionedGuiGlyph, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererControls, type RendererFrame, type RendererOptions, type RendererSurface, type RequestConfig, RequestError, type RequestResponse, Requests, type ResolvedBlockEntity, type ResolvedMineRenderData, type ResponseParser, SCENE_DOCUMENT_MAX_BYTES, SKIN_PARTS, type SavedLightSample, type SceneBlockDefinition, type SceneDocument, SceneDocumentLoader, type SceneEntityDefinition, SceneExporter, type SceneGLTFExportOptions, type SceneGuiDefinition, type SceneGuiLayer, SceneInspector, type SceneItemContext, type SceneModelDefinition, SceneObject, type SceneObjectDefinition, type SceneObjectDefinitionBase, type SceneObjectOptions, type SceneSkinDefinition, type SceneSkinPosePart, SceneStats, SceneStatsDisplay, SchematicParser, type SchematicParserOptions, type SectionAtlasSize, type SectionFluidInput, type SectionFluidKind, type SectionFluids, type SectionGeometryInput, type SectionGeometryPage, type SectionLightData, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type SectionTemplateData, SectionWorker, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type SpecialItemPart, type SpecialItemRenderer, SpecialItems, SpongeSchematicParser, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, type VideoExportOptions, VideoExporter, type WorldChunkSource, WorldStreamer, type WorldStreamerOptions, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, buildFluidQuads, buildSectionGeometry, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, copySectionLight, createCanvas, createFluidGeometry, createGuiTextGeometry, createGuiTextureGeometry, createImage, decodeSceneDocument, encodeSceneDocument, entityAnimationTime, estimateBytesUsed, fluidKindOf, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isFlyControls, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isResourceLocation, isSceneObject, isTransformable, isTripleArray, isVector3, layoutGuiText, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, parseSceneDocument, prefix, registerNodeEnv, resolveBlockFluidState, resolveLegacyBlock, resolveLegacyBlockState, sampleEntityAnimation, sampleEntityKeyframes, sampleFluid, sampleSectionLight, sectionGeometryTransferables, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas, yieldToEventLoop };
@@ -3579,6 +3579,23 @@ declare class ChunkData {
3579
3579
  private static validateIndex;
3580
3580
  }
3581
3581
 
3582
+ /** Saved light for a 16³ section. Each channel packs two levels per byte, with the even index in the low nibble. */
3583
+ interface SectionLightData {
3584
+ /** 2,048 bytes in x + 16z + 256y order. An omitted channel is zero. */
3585
+ block?: Uint8Array;
3586
+ /** 2,048 bytes in x + 16z + 256y order. An omitted channel is zero. */
3587
+ sky?: Uint8Array;
3588
+ }
3589
+ /** Saved light levels from 0 to 15, before brightness or directional shading. */
3590
+ interface SavedLightSample {
3591
+ block: number;
3592
+ sky: number;
3593
+ }
3594
+ /** Validates and copies saved channels so callers can reuse their input buffers. */
3595
+ declare function copySectionLight(light: SectionLightData): SectionLightData;
3596
+ /** Reads a cell in x + 16z + 256y order. Missing section data remains distinct from saved darkness. */
3597
+ declare function sampleSectionLight(light: SectionLightData | undefined, index: number): SavedLightSample | undefined;
3598
+
3582
3599
  type RegionInput = Uint8Array | ArrayBuffer;
3583
3600
  /** Reads `c.<x>.<z>.mcc` at absolute chunk coordinates, or returns `undefined` when the file is missing. */
3584
3601
  type AnvilExternalChunkReader = (x: number, z: number, signal?: AbortSignal) => Promise<Uint8Array | ArrayBuffer | undefined>;
@@ -3608,6 +3625,8 @@ interface AnvilChunk {
3608
3625
  x: number;
3609
3626
  z: number;
3610
3627
  dataVersion?: number;
3628
+ /** Whether the save marks its lighting as complete. Unknown for numeric legacy chunks without a validity flag. */
3629
+ lightValid?: boolean;
3611
3630
  /** DataVersion of the separate entity-region record; `dataVersion` belongs to the terrain. */
3612
3631
  entityDataVersion?: number;
3613
3632
  sections: {
@@ -3615,6 +3634,8 @@ interface AnvilChunk {
3615
3634
  data: ChunkData;
3616
3635
  /** 64 saved biome IDs, indexed by x + z * 4 + y * 16 at 4-block resolution. */
3617
3636
  biomes?: readonly string[];
3637
+ /** Saved block and sky light, including light-only sections outside the terrain. */
3638
+ light?: SectionLightData;
3618
3639
  }[];
3619
3640
  entities?: MultiBlockEntity[];
3620
3641
  }
@@ -3656,6 +3677,7 @@ declare class AnvilParser {
3656
3677
  private static readChunk;
3657
3678
  private static numericSection;
3658
3679
  private static entities;
3680
+ private static light;
3659
3681
  private static biomes;
3660
3682
  private static compounds;
3661
3683
  private static integer;
@@ -3714,6 +3736,78 @@ interface BlockInfo<SectionMeshing extends boolean = false> {
3714
3736
  object: SectionMeshing extends false ? BlockObject : BlockObject | undefined;
3715
3737
  }
3716
3738
 
3739
+ /** Static model geometry as quads: four vertices per quad, in quad order. */
3740
+ interface SectionTemplateData {
3741
+ quads: number;
3742
+ positions: Float32Array;
3743
+ normals: Float32Array;
3744
+ uvs: Float32Array;
3745
+ uvBounds: Float32Array;
3746
+ colors: Float32Array;
3747
+ indices: Uint16Array;
3748
+ cullFaces: Uint8Array;
3749
+ atlas: number;
3750
+ layer: number;
3751
+ }
3752
+ /** The pixel dimensions and animation state of a source atlas. */
3753
+ interface SectionAtlasSize {
3754
+ width: number;
3755
+ height: number;
3756
+ animated: boolean;
3757
+ }
3758
+ /** One fluid kind's sprite rectangles in atlas pixels and its linear-light vertex tint. */
3759
+ interface SectionFluidKind {
3760
+ atlas: number;
3761
+ still: [x: number, y: number, width: number, height: number];
3762
+ flow: [x: number, y: number, width: number, height: number];
3763
+ tint: [r: number, g: number, b: number];
3764
+ }
3765
+ /** Fluid cells of the section plus a one-cell shell, 18×18×18, x fastest, then z, then y. */
3766
+ interface SectionFluidInput {
3767
+ /** Bit 128 marks a surface rendered elsewhere; the cell still supplies neighbor fluid samples. */
3768
+ cells: Uint8Array;
3769
+ /** Linear RGB per section cell, indexed by (x + 16z + 256y) * 3. Omission uses the water kind's tint. */
3770
+ waterTints?: Float32Array;
3771
+ water?: SectionFluidKind;
3772
+ lava?: SectionFluidKind;
3773
+ }
3774
+ /** Section placements and their shared templates, ready for geometry building. */
3775
+ interface SectionGeometryInput {
3776
+ count: number;
3777
+ indices: Uint16Array;
3778
+ templates: Uint16Array;
3779
+ cullMasks: Uint8Array;
3780
+ templateData: SectionTemplateData[];
3781
+ atlases: SectionAtlasSize[];
3782
+ maxAtlasSize: number;
3783
+ fluids?: SectionFluidInput;
3784
+ /** Saved brightness levels for an 18×18×18 neighborhood; 255 means unknown/full brightness. */
3785
+ light?: Uint8Array;
3786
+ /** Minimum brightness for known light levels, from 0 to 1. */
3787
+ ambientLight?: number;
3788
+ }
3789
+ /** Merged quads and source-atlas placements for one atlas page. */
3790
+ interface SectionGeometryPage {
3791
+ layer: number;
3792
+ width: number;
3793
+ height: number;
3794
+ placements: {
3795
+ atlas: number;
3796
+ x: number;
3797
+ y: number;
3798
+ }[];
3799
+ positions: Float32Array;
3800
+ normals: Float32Array;
3801
+ uvs: Float32Array;
3802
+ uvBounds: Float32Array;
3803
+ colors: Float32Array;
3804
+ indices: Uint32Array;
3805
+ }
3806
+ /** Builds section-local geometry from visible quads, with bounded atlas pages per layer. */
3807
+ declare function buildSectionGeometry(input: SectionGeometryInput): SectionGeometryPage[];
3808
+ /** Returns the buffers behind each page's typed arrays for transfer to another thread. */
3809
+ declare function sectionGeometryTransferables(pages: readonly SectionGeometryPage[]): ArrayBuffer[];
3810
+
3717
3811
  /** Shared quad geometry and atlas data prepared for section merging. */
3718
3812
  interface SectionMeshTemplate {
3719
3813
  geometry: BufferGeometry;
@@ -3740,9 +3834,9 @@ interface SectionFluids {
3740
3834
  declare class SectionMesh extends Group {
3741
3835
  private readonly ownedMeshes;
3742
3836
  /** Builds section-local meshes from visible quads. `maxAtlasSize` limits each atlas dimension in pixels. */
3743
- static build(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids): SectionMesh;
3837
+ static build(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids, lighting?: Pick<SectionGeometryInput, "light" | "ambientLight">): SectionMesh;
3744
3838
  /** Builds section-local meshes in a browser worker when available, with synchronous fallback. */
3745
- static buildAsync(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids): Promise<SectionMesh>;
3839
+ static buildAsync(entries: readonly SectionMeshEntry[], maxAtlasSize?: number, fluids?: SectionFluids, lighting?: Pick<SectionGeometryInput, "light" | "ambientLight">): Promise<SectionMesh>;
3746
3840
  private static fromPages;
3747
3841
  dispose(): void;
3748
3842
  }
@@ -3781,6 +3875,9 @@ declare class Chunk<SectionMeshing extends boolean = false> {
3781
3875
  private readonly neighborCell?;
3782
3876
  private readonly biomeAt?;
3783
3877
  private readonly onBiomesChanged?;
3878
+ private readonly lightAt?;
3879
+ private readonly onLightCleared?;
3880
+ private readonly ambientLight;
3784
3881
  readonly scene: MineRenderScene;
3785
3882
  readonly x: number;
3786
3883
  readonly y: number;
@@ -3796,7 +3893,7 @@ declare class Chunk<SectionMeshing extends boolean = false> {
3796
3893
  private sectionMesh?;
3797
3894
  private meshDirty;
3798
3895
  private meshGeneration;
3799
- constructor(scene: MineRenderScene, x: number, y: number, z: number, onBlocksChanged?: ((positions: Vector3[]) => Promise<void>) | undefined, sectionModels?: SectionModels | undefined, neighborCell?: ((x: number, y: number, z: number) => number) | undefined, biomeAt?: ((x: number, y: number, z: number) => Maybe<string>) | undefined, onBiomesChanged?: ((biomes?: readonly string[]) => Promise<void>) | undefined);
3896
+ constructor(scene: MineRenderScene, x: number, y: number, z: number, onBlocksChanged?: ((positions: Vector3[]) => Promise<void>) | undefined, sectionModels?: SectionModels | undefined, neighborCell?: ((x: number, y: number, z: number) => number) | undefined, biomeAt?: ((x: number, y: number, z: number) => Maybe<string>) | undefined, onBiomesChanged?: ((biomes?: readonly string[]) => Promise<void>) | undefined, lightAt?: ((x: number, y: number, z: number) => number) | undefined, onLightCleared?: (() => Promise<void>) | undefined, ambientLight?: number);
3800
3897
  getBlockAt(x: number, y: number, z: number): Maybe<BlockInfo<SectionMeshing>>;
3801
3898
  getBlockAt(pos: Vector3): Maybe<BlockInfo<SectionMeshing>>;
3802
3899
  getBlockAt(pos: TripleArray): Maybe<BlockInfo<SectionMeshing>>;
@@ -3826,6 +3923,8 @@ declare class Chunk<SectionMeshing extends boolean = false> {
3826
3923
  /** Replaces every cell from parsed section data. The caller refreshes neighbor culling. */
3827
3924
  placeSection(data: ChunkData): Promise<void>;
3828
3925
  private positionAt;
3926
+ /** Refreshes saved lighting after adjacent columns load or unload, including columns with only light data. */
3927
+ refreshLight(indices?: Iterable<number>): Promise<void>;
3829
3928
  private biomePosition;
3830
3929
  private resolveState;
3831
3930
  private setWaterTint;
@@ -3867,6 +3966,11 @@ declare class MineRenderWorld<SectionMeshing extends boolean = false> {
3867
3966
  readonly scene: MineRenderScene;
3868
3967
  private readonly _chunks;
3869
3968
  private readonly biomes;
3969
+ private readonly light;
3970
+ private readonly lightValidity;
3971
+ private readonly highestSkySection;
3972
+ private readonly savedLighting;
3973
+ private readonly ambientLight;
3870
3974
  private readonly sectionModels?;
3871
3975
  private readonly entities?;
3872
3976
  private readonly pendingCulling;
@@ -3880,6 +3984,14 @@ declare class MineRenderWorld<SectionMeshing extends boolean = false> {
3880
3984
  getBiomeAt(x: number, y: number, z: number): Maybe<string>;
3881
3985
  getBiomeAt(pos: Vector3): Maybe<string>;
3882
3986
  getBiomeAt(pos: TripleArray): Maybe<string>;
3987
+ /**
3988
+ * Returns saved light at integer world block coordinates, including data marked invalid by the save.
3989
+ * Sky light is 15 above a column's highest saved sky-light array.
3990
+ */
3991
+ getLightAt(x: number, y: number, z: number): Maybe<SavedLightSample>;
3992
+ getLightAt(pos: Vector3): Maybe<SavedLightSample>;
3993
+ getLightAt(pos: TripleArray): Maybe<SavedLightSample>;
3994
+ private lightLevelAt;
3883
3995
  /**
3884
3996
  * Places or replaces a block and refreshes neighboring faces.
3885
3997
  * Pass `undefined` or an air block to remove the block at these world block coordinates.
@@ -3905,7 +4017,7 @@ declare class MineRenderWorld<SectionMeshing extends boolean = false> {
3905
4017
  placeMultiBlock(multiblock: MultiBlockStructure, useBatches?: boolean, executor?: BatchedExecutor): Promise<void>;
3906
4018
  private placeBlocks;
3907
4019
  private placeChunkGroups;
3908
- /** Replaces a chunk column's blocks and biome samples and, with `renderEntities`, its supported saved mobs. */
4020
+ /** Replaces a chunk column's blocks, biomes, and saved light and, with `renderEntities`, its supported saved mobs. */
3909
4021
  placeChunk(chunk: AnvilChunk, executor?: BatchedExecutor): Promise<void>;
3910
4022
  /**
3911
4023
  * Removes blocks and owned entities at chunk-column coordinates, then refreshes neighboring faces and fluids.
@@ -3933,78 +4045,14 @@ interface MineRenderWorldOptions<SectionMeshing extends boolean = boolean> {
3933
4045
  renderEntities?: boolean;
3934
4046
  /** Merge static opaque cubes into section meshes. Merged blocks have no individual object. */
3935
4047
  sectionMeshing?: SectionMeshing;
4048
+ /** Shade blocks and fluids with saved sky/block light. Missing or invalid data keeps preview brightness. Defaults to false. Requires `sectionMeshing`. */
4049
+ savedLighting?: boolean;
4050
+ /** Minimum brightness for saved lighting, from 0 to 1, like a dimension type's `ambient_light`. Defaults to 0. */
4051
+ ambientLight?: number;
3936
4052
  /** Maximum width and height of each section atlas page, in pixels. */
3937
4053
  maxAtlasSize?: number;
3938
4054
  }
3939
4055
 
3940
- /** Static model geometry as quads: four vertices per quad, in quad order. */
3941
- interface SectionTemplateData {
3942
- quads: number;
3943
- positions: Float32Array;
3944
- normals: Float32Array;
3945
- uvs: Float32Array;
3946
- uvBounds: Float32Array;
3947
- colors: Float32Array;
3948
- indices: Uint16Array;
3949
- cullFaces: Uint8Array;
3950
- atlas: number;
3951
- layer: number;
3952
- }
3953
- /** The pixel dimensions and animation state of a source atlas. */
3954
- interface SectionAtlasSize {
3955
- width: number;
3956
- height: number;
3957
- animated: boolean;
3958
- }
3959
- /** One fluid kind's sprite rectangles in atlas pixels and its linear-light vertex tint. */
3960
- interface SectionFluidKind {
3961
- atlas: number;
3962
- still: [x: number, y: number, width: number, height: number];
3963
- flow: [x: number, y: number, width: number, height: number];
3964
- tint: [r: number, g: number, b: number];
3965
- }
3966
- /** Fluid cells of the section plus a one-cell shell, 18×18×18, x fastest, then z, then y. */
3967
- interface SectionFluidInput {
3968
- /** Bit 128 marks a surface rendered elsewhere; the cell still supplies neighbor fluid samples. */
3969
- cells: Uint8Array;
3970
- /** Linear RGB per section cell, indexed by (x + 16z + 256y) * 3. Omission uses the water kind's tint. */
3971
- waterTints?: Float32Array;
3972
- water?: SectionFluidKind;
3973
- lava?: SectionFluidKind;
3974
- }
3975
- /** Section placements and their shared templates, ready for geometry building. */
3976
- interface SectionGeometryInput {
3977
- count: number;
3978
- indices: Uint16Array;
3979
- templates: Uint16Array;
3980
- cullMasks: Uint8Array;
3981
- templateData: SectionTemplateData[];
3982
- atlases: SectionAtlasSize[];
3983
- maxAtlasSize: number;
3984
- fluids?: SectionFluidInput;
3985
- }
3986
- /** Merged quads and source-atlas placements for one atlas page. */
3987
- interface SectionGeometryPage {
3988
- layer: number;
3989
- width: number;
3990
- height: number;
3991
- placements: {
3992
- atlas: number;
3993
- x: number;
3994
- y: number;
3995
- }[];
3996
- positions: Float32Array;
3997
- normals: Float32Array;
3998
- uvs: Float32Array;
3999
- uvBounds: Float32Array;
4000
- colors: Float32Array;
4001
- indices: Uint32Array;
4002
- }
4003
- /** Builds section-local geometry from visible quads, with bounded atlas pages per layer. */
4004
- declare function buildSectionGeometry(input: SectionGeometryInput): SectionGeometryPage[];
4005
- /** Returns the buffers behind each page's typed arrays for transfer to another thread. */
4006
- declare function sectionGeometryTransferables(pages: readonly SectionGeometryPage[]): ArrayBuffer[];
4007
-
4008
4056
  /** Runs section geometry builds in the environment's shared worker. */
4009
4057
  declare class SectionWorker {
4010
4058
  private worker;
@@ -4162,4 +4210,4 @@ declare class NodeRenderer extends Renderer {
4162
4210
  dispose(): void;
4163
4211
  }
4164
4212
 
4165
- export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, type AnvilEntityChunk, type AnvilExternalChunkReader, type AnvilParseOptions, AnvilParser, type AnvilRegion, type AnvilRegionReader, AnvilWorldSource, type AnvilWorldSourceOptions, ArchiveAssetSource, type ArchiveAssetSourceOptions, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, type BannerPattern, type BannerPatternDraw, BannerPatterns, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Biome, type BiomeColorKind, Biomes, type BitmapFont, type BitmapGlyph, type Block, BlockEntities, type BlockEntityEntry, type BlockEntityIndex, type BlockEntityPart, type BlockEntityRotation, type BlockFluidState, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, BlockStateResolver, type BlockStateVariant, type BlockStateVariants, BlockStates, BlockTints, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, Colormaps, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsMode, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, DYE_COLORS, type DebugOptions, type DecoratedPotSide, DecoratedPots, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type DyeColor, ENTITY_ANIMATION_CHANNELS, type ElementFace, type ElementRotation, Entities, type EntityAnimation, type EntityAnimationBone, type EntityAnimationChannel, type EntityAnimationFile, type EntityAnimationKeyframe, type EntityAnimationOptions, EntityAnimationPlayer, type EntityAnimationPose, type EntityLayer, type EntityModel, type EntityModelCube, type EntityModelFile, type EntityModelLayer, type EntityModelOptions, type EntityModelPart, type EntityModelPass, EntityObject, type EntityObjectOptions, type EntityRenderMode, type EntityTransformOp, Env, type EnvProvider, type ExtractableImageData, type FluidKind, FluidModelObject, type FluidQuads, type FluidRules, type FluidSample, type FluidSampler, type FlyAction, FlyControls, type FlyControlsEventMap, Fonts, type FrameCallback, type FromTo, GUI_CONTAINER_LAYOUTS, Geometries, type GuiBookButtonState, type GuiBookOptions, type GuiBossBarColor, type GuiBossBarOptions, type GuiContainerType, GuiHelper, type GuiItemLayer, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, type GuiRecipe, type GuiRecipeIngredient, type GuiRecipeOptions, type GuiSpriteScaling, type GuiText, type GuiTextLayer, type GuiTextLayout, type GuiTextOptions, type GuiTextRun, type GuiTextStyle, type GuiTextureLayer, type GuiTooltipOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, ItemDefaults, ItemGlint, type ItemModel, type ItemModelContext, type ItemModelTextures, type ItemTintColor, type ItemTintSource, ItemTints, type ListAsset, LitematicaParser, type LitematicaRegion, type LitematicaStructure, type LoadedSceneDocument, type LoadedSceneObject, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderData, type MineRenderDataManifest, type MineRenderDatasets, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MineRenderWorldOptions, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, ModelCulling, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, ModelTextures, Models, type MultiBlockBlock, type MultiBlockEntity, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, type NodeImageOptions, NodeRenderer, type NodeRendererOptions, OrbitControls, type PackFormat, PackFormats, PackMetadata, PersistentCache, PlayerHeadTextures, type PositionedGuiGlyph, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererControls, type RendererFrame, type RendererOptions, type RendererSurface, type RequestConfig, RequestError, type RequestResponse, Requests, type ResolvedBlockEntity, type ResolvedMineRenderData, type ResponseParser, SCENE_DOCUMENT_MAX_BYTES, SKIN_PARTS, type SceneBlockDefinition, type SceneDocument, SceneDocumentLoader, type SceneEntityDefinition, SceneExporter, type SceneGLTFExportOptions, type SceneGuiDefinition, type SceneGuiLayer, SceneInspector, type SceneItemContext, type SceneModelDefinition, SceneObject, type SceneObjectDefinition, type SceneObjectDefinitionBase, type SceneObjectOptions, type SceneSkinDefinition, type SceneSkinPosePart, SceneStats, SceneStatsDisplay, SchematicParser, type SchematicParserOptions, type SectionAtlasSize, type SectionFluidInput, type SectionFluidKind, type SectionFluids, type SectionGeometryInput, type SectionGeometryPage, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type SectionTemplateData, SectionWorker, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type SpecialItemPart, type SpecialItemRenderer, SpecialItems, SpongeSchematicParser, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, type VideoExportOptions, VideoExporter, type WorldChunkSource, WorldStreamer, type WorldStreamerOptions, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, buildFluidQuads, buildSectionGeometry, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createFluidGeometry, createGuiTextGeometry, createGuiTextureGeometry, createImage, decodeSceneDocument, encodeSceneDocument, entityAnimationTime, estimateBytesUsed, fluidKindOf, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isFlyControls, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isResourceLocation, isSceneObject, isTransformable, isTripleArray, isVector3, layoutGuiText, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, parseSceneDocument, prefix, registerNodeEnv, resolveBlockFluidState, resolveLegacyBlock, resolveLegacyBlockState, sampleEntityAnimation, sampleEntityKeyframes, sampleFluid, sectionGeometryTransferables, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas, yieldToEventLoop };
4213
+ export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, type AnvilEntityChunk, type AnvilExternalChunkReader, type AnvilParseOptions, AnvilParser, type AnvilRegion, type AnvilRegionReader, AnvilWorldSource, type AnvilWorldSourceOptions, ArchiveAssetSource, type ArchiveAssetSourceOptions, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, type BannerPattern, type BannerPatternDraw, BannerPatterns, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Biome, type BiomeColorKind, Biomes, type BitmapFont, type BitmapGlyph, type Block, BlockEntities, type BlockEntityEntry, type BlockEntityIndex, type BlockEntityPart, type BlockEntityRotation, type BlockFluidState, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, BlockStateResolver, type BlockStateVariant, type BlockStateVariants, BlockStates, BlockTints, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, Colormaps, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsMode, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, DYE_COLORS, type DebugOptions, type DecoratedPotSide, DecoratedPots, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type DyeColor, ENTITY_ANIMATION_CHANNELS, type ElementFace, type ElementRotation, Entities, type EntityAnimation, type EntityAnimationBone, type EntityAnimationChannel, type EntityAnimationFile, type EntityAnimationKeyframe, type EntityAnimationOptions, EntityAnimationPlayer, type EntityAnimationPose, type EntityLayer, type EntityModel, type EntityModelCube, type EntityModelFile, type EntityModelLayer, type EntityModelOptions, type EntityModelPart, type EntityModelPass, EntityObject, type EntityObjectOptions, type EntityRenderMode, type EntityTransformOp, Env, type EnvProvider, type ExtractableImageData, type FluidKind, FluidModelObject, type FluidQuads, type FluidRules, type FluidSample, type FluidSampler, type FlyAction, FlyControls, type FlyControlsEventMap, Fonts, type FrameCallback, type FromTo, GUI_CONTAINER_LAYOUTS, Geometries, type GuiBookButtonState, type GuiBookOptions, type GuiBossBarColor, type GuiBossBarOptions, type GuiContainerType, GuiHelper, type GuiItemLayer, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, type GuiRecipe, type GuiRecipeIngredient, type GuiRecipeOptions, type GuiSpriteScaling, type GuiText, type GuiTextLayer, type GuiTextLayout, type GuiTextOptions, type GuiTextRun, type GuiTextStyle, type GuiTextureLayer, type GuiTooltipOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, ItemDefaults, ItemGlint, type ItemModel, type ItemModelContext, type ItemModelTextures, type ItemTintColor, type ItemTintSource, ItemTints, type ListAsset, LitematicaParser, type LitematicaRegion, type LitematicaStructure, type LoadedSceneDocument, type LoadedSceneObject, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderData, type MineRenderDataManifest, type MineRenderDatasets, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MineRenderWorldOptions, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, ModelCulling, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, ModelTextures, Models, type MultiBlockBlock, type MultiBlockEntity, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, type NodeImageOptions, NodeRenderer, type NodeRendererOptions, OrbitControls, type PackFormat, PackFormats, PackMetadata, PersistentCache, PlayerHeadTextures, type PositionedGuiGlyph, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererControls, type RendererFrame, type RendererOptions, type RendererSurface, type RequestConfig, RequestError, type RequestResponse, Requests, type ResolvedBlockEntity, type ResolvedMineRenderData, type ResponseParser, SCENE_DOCUMENT_MAX_BYTES, SKIN_PARTS, type SavedLightSample, type SceneBlockDefinition, type SceneDocument, SceneDocumentLoader, type SceneEntityDefinition, SceneExporter, type SceneGLTFExportOptions, type SceneGuiDefinition, type SceneGuiLayer, SceneInspector, type SceneItemContext, type SceneModelDefinition, SceneObject, type SceneObjectDefinition, type SceneObjectDefinitionBase, type SceneObjectOptions, type SceneSkinDefinition, type SceneSkinPosePart, SceneStats, SceneStatsDisplay, SchematicParser, type SchematicParserOptions, type SectionAtlasSize, type SectionFluidInput, type SectionFluidKind, type SectionFluids, type SectionGeometryInput, type SectionGeometryPage, type SectionLightData, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type SectionTemplateData, SectionWorker, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type SpecialItemPart, type SpecialItemRenderer, SpecialItems, SpongeSchematicParser, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, type VideoExportOptions, VideoExporter, type WorldChunkSource, WorldStreamer, type WorldStreamerOptions, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, buildFluidQuads, buildSectionGeometry, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, copySectionLight, createCanvas, createFluidGeometry, createGuiTextGeometry, createGuiTextureGeometry, createImage, decodeSceneDocument, encodeSceneDocument, entityAnimationTime, estimateBytesUsed, fluidKindOf, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isFlyControls, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isResourceLocation, isSceneObject, isTransformable, isTripleArray, isVector3, layoutGuiText, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, parseSceneDocument, prefix, registerNodeEnv, resolveBlockFluidState, resolveLegacyBlock, resolveLegacyBlockState, sampleEntityAnimation, sampleEntityKeyframes, sampleFluid, sampleSectionLight, sectionGeometryTransferables, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas, yieldToEventLoop };