minerender 2.1.0-beta.5 → 2.1.0-beta.7

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.
Files changed (102) hide show
  1. package/dist/browser/esm/Materials.mjs +6 -3
  2. package/dist/browser/esm/Materials.mjs.map +1 -1
  3. package/dist/browser/esm/Ticker.mjs +3 -1
  4. package/dist/browser/esm/Ticker.mjs.map +1 -1
  5. package/dist/browser/esm/UVMapper.mjs +9 -9
  6. package/dist/browser/esm/UVMapper.mjs.map +1 -1
  7. package/dist/browser/esm/assets/AssetDefaults.mjs +8 -0
  8. package/dist/browser/esm/assets/AssetDefaults.mjs.map +1 -0
  9. package/dist/browser/esm/assets/AssetKey.mjs +1 -1
  10. package/dist/browser/esm/assets/AssetKey.mjs.map +1 -1
  11. package/dist/browser/esm/assets/AssetLoader.mjs +5 -5
  12. package/dist/browser/esm/assets/AssetLoader.mjs.map +1 -1
  13. package/dist/browser/esm/assets/Assets.mjs +1 -5
  14. package/dist/browser/esm/assets/Assets.mjs.map +1 -1
  15. package/dist/browser/esm/assets/BlockEntities.mjs +3 -1
  16. package/dist/browser/esm/assets/BlockEntities.mjs.map +1 -1
  17. package/dist/browser/esm/assets/BlockStates.mjs +1 -1
  18. package/dist/browser/esm/assets/BlockStates.mjs.map +1 -1
  19. package/dist/browser/esm/assets/Entities.mjs +1 -1
  20. package/dist/browser/esm/assets/Entities.mjs.map +1 -1
  21. package/dist/browser/esm/assets/Fonts.mjs +31 -4
  22. package/dist/browser/esm/assets/Fonts.mjs.map +1 -1
  23. package/dist/browser/esm/assets/Models.mjs +1 -1
  24. package/dist/browser/esm/assets/Models.mjs.map +1 -1
  25. package/dist/browser/esm/assets/_fonts/Unihex.mjs +168 -0
  26. package/dist/browser/esm/assets/_fonts/Unihex.mjs.map +1 -0
  27. package/dist/browser/esm/assets/index.mjs +1 -0
  28. package/dist/browser/esm/assets/index.mjs.map +1 -1
  29. package/dist/browser/esm/assets/source/HostedAssetSource.mjs +19 -9
  30. package/dist/browser/esm/assets/source/HostedAssetSource.mjs.map +1 -1
  31. package/dist/browser/esm/assets/source/parser/AssetParsers.mjs +1 -0
  32. package/dist/browser/esm/assets/source/parser/AssetParsers.mjs.map +1 -1
  33. package/dist/browser/esm/cache/Caching.mjs +2 -0
  34. package/dist/browser/esm/cache/Caching.mjs.map +1 -1
  35. package/dist/browser/esm/entity/scene/EntityAnimationPlayer.mjs +62 -11
  36. package/dist/browser/esm/entity/scene/EntityAnimationPlayer.mjs.map +1 -1
  37. package/dist/browser/esm/entity/scene/EntityObject.mjs +53 -20
  38. package/dist/browser/esm/entity/scene/EntityObject.mjs.map +1 -1
  39. package/dist/browser/esm/env/browser/BrowserCache.mjs +3 -3
  40. package/dist/browser/esm/env/browser/BrowserCache.mjs.map +1 -1
  41. package/dist/browser/esm/env/browser/section.worker.mjs +5 -3
  42. package/dist/browser/esm/env/browser/section.worker.mjs.map +1 -1
  43. package/dist/browser/esm/gui/GuiText.mjs +4 -3
  44. package/dist/browser/esm/gui/GuiText.mjs.map +1 -1
  45. package/dist/browser/esm/image/ImageLoader.mjs +3 -3
  46. package/dist/browser/esm/image/ImageLoader.mjs.map +1 -1
  47. package/dist/browser/esm/index.browser.d.mts +115 -20
  48. package/dist/browser/esm/inspector/SceneInspector.mjs +3 -3
  49. package/dist/browser/esm/inspector/SceneInspector.mjs.map +1 -1
  50. package/dist/browser/esm/instance/InstanceManager.mjs +4 -4
  51. package/dist/browser/esm/instance/InstanceManager.mjs.map +1 -1
  52. package/dist/browser/esm/model/block/scene/BlockObject.mjs +3 -1
  53. package/dist/browser/esm/model/block/scene/BlockObject.mjs.map +1 -1
  54. package/dist/browser/esm/model/multiblock/StructureParser.mjs +7 -4
  55. package/dist/browser/esm/model/multiblock/StructureParser.mjs.map +1 -1
  56. package/dist/browser/esm/model/scene/ModelObject.mjs +8 -4
  57. package/dist/browser/esm/model/scene/ModelObject.mjs.map +1 -1
  58. package/dist/browser/esm/nbt/NBTHelper.mjs +5 -2
  59. package/dist/browser/esm/nbt/NBTHelper.mjs.map +1 -1
  60. package/dist/browser/esm/renderer/Renderer.mjs +4 -2
  61. package/dist/browser/esm/renderer/Renderer.mjs.map +1 -1
  62. package/dist/browser/esm/renderer/SceneObject.mjs +0 -6
  63. package/dist/browser/esm/renderer/SceneObject.mjs.map +1 -1
  64. package/dist/browser/esm/request/Requests.mjs +3 -3
  65. package/dist/browser/esm/request/Requests.mjs.map +1 -1
  66. package/dist/browser/esm/skin/Skins.mjs +6 -4
  67. package/dist/browser/esm/skin/Skins.mjs.map +1 -1
  68. package/dist/browser/esm/texture/TextureLoader.mjs +4 -2
  69. package/dist/browser/esm/texture/TextureLoader.mjs.map +1 -1
  70. package/dist/browser/esm/util/log.mjs +75 -0
  71. package/dist/browser/esm/util/log.mjs.map +1 -1
  72. package/dist/browser/esm/util/model.mjs +7 -7
  73. package/dist/browser/esm/util/model.mjs.map +1 -1
  74. package/dist/browser/esm/util/performance.mjs.map +1 -1
  75. package/dist/browser/esm/world/Chunk.mjs +8 -5
  76. package/dist/browser/esm/world/Chunk.mjs.map +1 -1
  77. package/dist/browser/esm/world/MineRenderWorld.mjs +96 -54
  78. package/dist/browser/esm/world/MineRenderWorld.mjs.map +1 -1
  79. package/dist/browser/esm/world/SectionGeometry.mjs +5 -3
  80. package/dist/browser/esm/world/SectionGeometry.mjs.map +1 -1
  81. package/dist/browser/esm/world/SectionMesh.mjs +4 -0
  82. package/dist/browser/esm/world/SectionMesh.mjs.map +1 -1
  83. package/dist/browser/esm/world/SectionModels.mjs +2 -2
  84. package/dist/browser/esm/world/SectionModels.mjs.map +1 -1
  85. package/dist/browser/esm/world/WorldStreamer.mjs +21 -20
  86. package/dist/browser/esm/world/WorldStreamer.mjs.map +1 -1
  87. package/dist/browser/esm/world/_culling/BlockCulling.mjs +1 -1
  88. package/dist/browser/esm/world/_culling/BlockCulling.mjs.map +1 -1
  89. package/dist/browser/esm/world/_entities/WorldEntities.mjs +3 -1
  90. package/dist/browser/esm/world/_entities/WorldEntities.mjs.map +1 -1
  91. package/dist/browser/index.d.ts +115 -20
  92. package/dist/browser/index.js +3449 -3025
  93. package/dist/browser/index.js.map +1 -1
  94. package/dist/bundle.js +13217 -12745
  95. package/dist/bundle.js.map +1 -1
  96. package/dist/node/index.d.mts +115 -20
  97. package/dist/node/index.d.ts +115 -20
  98. package/dist/node/index.js +3477 -3046
  99. package/dist/node/index.js.map +1 -1
  100. package/dist/node/index.mjs +3456 -3027
  101. package/dist/node/index.mjs.map +1 -1
  102. package/package.json +1 -1
@@ -915,6 +915,9 @@ declare class MinecraftFaceUV {
915
915
  */
916
916
  declare function shutdown(): void;
917
917
 
918
+ declare const DEFAULT_ROOT = "https://assets.mcasset.cloud/1.21.11";
919
+ declare const DEFAULT_NAMESPACE = "minecraft";
920
+
918
921
  /** Runs queued tasks in bounded batches. Idle executors do not keep a timer running. */
919
922
  declare class BatchedExecutor {
920
923
  readonly interval: number;
@@ -932,6 +935,34 @@ declare class BatchedExecutor {
932
935
  }
933
936
  type Task<T = unknown> = () => T | Promise<T>;
934
937
 
938
+ /** Severity of a log message, from most to least verbose. */
939
+ type LogLevel = "debug" | "info" | "warn" | "error";
940
+ /** The lowest level that is printed, or `"silent"` to print nothing. */
941
+ type LogThreshold = LogLevel | "silent";
942
+ /** Receives each message that passes the threshold. `args` are the logger call's arguments, without a tag. */
943
+ type LogHandler = (level: LogLevel, namespace: string, args: unknown[]) => void;
944
+ interface LoggingOptions {
945
+ /** Threshold for namespaces without an override. Starts at `"warn"`. */
946
+ level?: LogThreshold;
947
+ /** Thresholds by logger name, such as `{ UVMapper: "debug" }`. Replaces earlier overrides. */
948
+ namespaces?: Record<string, LogThreshold>;
949
+ }
950
+ interface Logger {
951
+ debug(...args: unknown[]): void;
952
+ info(...args: unknown[]): void;
953
+ warn(...args: unknown[]): void;
954
+ error(...args: unknown[]): void;
955
+ }
956
+ /** Global log settings for every MineRender logger. */
957
+ declare class Logging {
958
+ /** Updates the given settings and keeps the others. */
959
+ static configure(options: LoggingOptions): void;
960
+ /** Sends messages to `handler` instead of the console. Call without an argument to restore console output. */
961
+ static setHandler(handler?: LogHandler): void;
962
+ }
963
+ /** Creates a logger whose messages are tagged and filtered as `namespace`. */
964
+ declare function logger(namespace: string): Logger;
965
+ /** @deprecated Use {@link logger}. */
935
966
  declare function prefix(prefix?: string): string;
936
967
 
937
968
  /** Rotates geometry in place around the element's origin. The supplied angle is in degrees. */
@@ -943,8 +974,11 @@ declare function addWireframeToObject(obj: Object3D, color?: number, w?: number)
943
974
  /** Adds edge and axis helpers to a mesh and returns a function that disposes their resources. */
944
975
  declare function addWireframeToMesh(geo: BufferGeometry, mesh: Mesh, color?: number, w?: number): () => void;
945
976
 
977
+ /** @deprecated Unused by MineRender. */
946
978
  declare function captureException(e: any, ...extra: any[]): void;
979
+ /** @deprecated Unused by MineRender. */
947
980
  declare function timingStart(marker: string): void;
981
+ /** @deprecated Unused by MineRender. */
948
982
  declare function timingEnd(marker: string): void;
949
983
 
950
984
  declare function sha1(str: string): string;
@@ -964,7 +998,8 @@ declare enum AssetParser {
964
998
  NBT = "nbt",
965
999
  IMAGE = "image",
966
1000
  LIST = "list",
967
- JSON = "json"
1001
+ JSON = "json",
1002
+ BINARY = "binary"
968
1003
  }
969
1004
 
970
1005
  /** An asset provider registered with {@link AssetLoader.addSource}. */
@@ -1058,8 +1093,6 @@ type MultipartCondition = Record<string, string> | {
1058
1093
  AND: MultipartCondition[];
1059
1094
  };
1060
1095
 
1061
- declare const DEFAULT_ROOT = "https://assets.mcasset.cloud/1.21.11";
1062
- declare const DEFAULT_NAMESPACE = "minecraft";
1063
1096
  /** Convenience accessors for model and blockstate loading. */
1064
1097
  declare class Assets {
1065
1098
  /**
@@ -1282,14 +1315,20 @@ interface BitmapGlyph {
1282
1315
  scale: number;
1283
1316
  ascent: number;
1284
1317
  advance: number;
1318
+ /** Extra advance and drawing offset for bold text, in GUI pixels. Defaults to 1. */
1319
+ boldOffset?: number;
1320
+ /** Shadow displacement in GUI pixels. Defaults to 1. */
1321
+ shadowOffset?: number;
1285
1322
  }
1286
1323
  /** Character-to-glyph lookup assembled from the active resource-pack fonts. */
1287
1324
  interface BitmapFont {
1288
1325
  glyphs: Map<string, BitmapGlyph>;
1326
+ /** Resolves characters through the font providers before measuring or drawing them. */
1327
+ resolve?(characters: string): Promise<void>;
1289
1328
  }
1290
- /** Loads Minecraft bitmap, space, and reference font providers for GUI text. */
1329
+ /** Loads Minecraft bitmap, Unihex, space, and reference font providers for GUI text. */
1291
1330
  declare class Fonts {
1292
- /** Combines font definitions in source-priority order. Unsupported Unihex and TrueType providers are skipped. */
1331
+ /** Combines font definitions in source-priority order. TrueType providers are skipped. */
1293
1332
  static get(key?: AssetKey | string): Promise<BitmapFont>;
1294
1333
  private static relatedKey;
1295
1334
  private static load;
@@ -1578,25 +1617,35 @@ interface EntityAnimationOptions {
1578
1617
  speed?: number;
1579
1618
  /** Start time in seconds; defaults to 0. */
1580
1619
  time?: number;
1620
+ /** Nonnegative finite weights in clip order; defaults to 1 per clip. Offsets add without normalizing weights. */
1621
+ weights?: readonly number[];
1581
1622
  }
1582
1623
  /**
1583
- * Poses part groups from a keyframe animation the way vanilla does: every update restores the
1584
- * default pose of each animated part, then adds the sampled offsets to its position, Euler angles and scale.
1624
+ * Poses part groups from keyframe animations: every update restores the default pose of each
1625
+ * animated part, then adds weighted sampled offsets to its position, Euler angles and scale.
1585
1626
  * It owns no timer; the owner advances it.
1586
1627
  */
1587
1628
  declare class EntityAnimationPlayer {
1588
1629
  private parts;
1589
- private _animation?;
1630
+ private _animations;
1631
+ private _weights;
1632
+ private loops;
1590
1633
  private _time;
1591
- private loop;
1592
1634
  private speed;
1593
1635
  get animation(): EntityAnimation | undefined;
1636
+ get animations(): readonly EntityAnimation[];
1637
+ get weights(): readonly number[];
1594
1638
  get time(): number;
1595
1639
  /**
1596
1640
  * Starts an animation on matching named parts. Supplied baked poses are the baseline for offsets;
1597
1641
  * without them, the current pose is used. Stopping restores the pose from before playback.
1598
1642
  */
1599
1643
  play(layers: Object3D[], animation: EntityAnimation, options?: EntityAnimationOptions, poses?: ReadonlyMap<Object3D, EntityModelPart["pose"]>): void;
1644
+ /**
1645
+ * Starts clips on matching parts with a shared clock. Weighted offsets add to the supplied baked poses
1646
+ * or, without poses, to each animated part's pose when playback starts.
1647
+ */
1648
+ playAnimations(layers: Object3D[], animations: readonly EntityAnimation[], options?: EntityAnimationOptions, poses?: ReadonlyMap<Object3D, EntityModelPart["pose"]>): void;
1600
1649
  /** Restores the poses from before playback. Returns whether an animation was active. */
1601
1650
  stop(): boolean;
1602
1651
  /** Forgets the animation without touching the parts, for parts that no longer exist. */
@@ -1605,8 +1654,12 @@ declare class EntityAnimationPlayer {
1605
1654
  setTime(seconds: number): boolean;
1606
1655
  /** Advances playback by elapsed seconds multiplied by the speed passed to {@link play}. */
1607
1656
  advance(deltaSeconds: number): boolean;
1657
+ /** Changes weights in clip order and reapplies the current time without restarting playback. */
1658
+ setWeights(weights: readonly number[]): boolean;
1608
1659
  private apply;
1609
1660
  }
1661
+ /** @internal */
1662
+ declare function validateAnimationWeights(weights: readonly number[], count: number): number[];
1610
1663
 
1611
1664
  /** Renders selected entity layers as named part groups. Create it through {@link MineRenderScene.addEntity}. */
1612
1665
  declare class EntityObject extends SceneObject {
@@ -1635,8 +1688,10 @@ declare class EntityObject extends SceneObject {
1635
1688
  private updateScroll;
1636
1689
  /** The first active clip, until playback is stopped or the object is disposed. */
1637
1690
  get animation(): Maybe<EntityAnimation>;
1638
- /** Clips playing together, each targeting a separate geometry layer. */
1691
+ /** Clips playing together, in the order passed to {@link playAnimations}. */
1639
1692
  get activeAnimations(): readonly EntityAnimation[];
1693
+ /** Weights of the active clips, in the same order as {@link activeAnimations}. */
1694
+ get animationWeights(): readonly number[];
1640
1695
  /** Seconds since the animation started, before looping. */
1641
1696
  get animationTime(): number;
1642
1697
  /**
@@ -1646,8 +1701,13 @@ declare class EntityObject extends SceneObject {
1646
1701
  * The object owns no clock: call {@link advanceAnimation} per frame, or {@link setAnimationTime}.
1647
1702
  */
1648
1703
  playAnimation(animation: EntityAnimation, options?: EntityAnimationOptions): void;
1649
- /** Plays clips with a shared clock and no blending. Selected layers without their own clip follow `main`. */
1704
+ /**
1705
+ * Plays clips with a shared clock, adding their weighted offsets within each geometry layer.
1706
+ * Weights default to 1 and are not normalized. Selected layers without their own clip follow `main`.
1707
+ */
1650
1708
  playAnimations(animations: readonly EntityAnimation[], options?: EntityAnimationOptions): void;
1709
+ /** Changes weights in active clip order, notifying the scene without restarting the shared clock. Has no effect without an animation. */
1710
+ setAnimationWeights(weights: readonly number[]): void;
1651
1711
  /** Stops all clips and restores the poses from before playback. */
1652
1712
  stopAnimation(): void;
1653
1713
  /** Poses the object at an explicit time in seconds. Has no effect without an animation. */
@@ -2433,11 +2493,21 @@ interface Palette {
2433
2493
  };
2434
2494
  }
2435
2495
  interface PaletteEntry {
2436
- Name: {
2496
+ Name?: {
2497
+ type: "string";
2498
+ value: string;
2499
+ };
2500
+ id?: {
2437
2501
  type: "string";
2438
2502
  value: string;
2439
2503
  };
2440
- Properties: {
2504
+ Properties?: {
2505
+ type: "compound";
2506
+ value: {
2507
+ [property: string]: PalettePropertyValue;
2508
+ };
2509
+ };
2510
+ properties?: {
2441
2511
  type: "compound";
2442
2512
  value: {
2443
2513
  [property: string]: PalettePropertyValue;
@@ -2495,6 +2565,7 @@ declare class HostedAssetSource extends AssetSource {
2495
2565
  static readonly IMAGE: ResponseParser<TextureAsset>;
2496
2566
  static readonly LIST: ResponseParser<ListAsset>;
2497
2567
  static readonly JSON: ResponseParser<any>;
2568
+ static readonly BINARY: ResponseParser<BinaryAsset>;
2498
2569
  static readonly PARSER_MAP: Map<AssetParser, ResponseParser<any>>;
2499
2570
  /** Retries missing assets with the `minecraft` namespace and default root. Other failures reject. */
2500
2571
  loadOrRetryWithDefaults<T extends MinecraftAsset>(key: AssetKey, parser: ResponseParser<T>): Promise<Maybe<T>>;
@@ -2515,6 +2586,10 @@ declare class HostedAssetSource extends AssetSource {
2515
2586
  interface HostedAssetSourceOptions {
2516
2587
  retryDefaults: boolean;
2517
2588
  }
2589
+ /** Encoded asset bytes loaded without JSON or image decoding. */
2590
+ interface BinaryAsset extends MinecraftAsset {
2591
+ data: Uint8Array;
2592
+ }
2518
2593
 
2519
2594
  /** A resource-pack ZIP entry, with its archive-relative path and lazily extracted bytes. */
2520
2595
  interface ArchiveEntry {
@@ -2652,6 +2727,12 @@ interface BedrockGeometryFile {
2652
2727
  [key: string]: BedrockGeometry | any;
2653
2728
  }
2654
2729
 
2730
+ interface UnihexFile {
2731
+ indices: Int32Array;
2732
+ rows: Uint32Array;
2733
+ metrics: Uint8Array;
2734
+ }
2735
+
2655
2736
  /** Shared in-memory caches for loaded assets and render resources. Persistent stores are managed separately. */
2656
2737
  declare class Caching {
2657
2738
  private static _generation;
@@ -2677,6 +2758,7 @@ declare class Caching {
2677
2758
  static readonly entityTextureCache: AsyncLoadingCache<CacheKey, AssetKey>;
2678
2759
  static readonly entityAnimationCache: AsyncLoadingCache<CacheKey, EntityAnimationFile>;
2679
2760
  static readonly blockEntityIndexCache: AsyncLoadingCache<CacheKey, BlockEntityIndex>;
2761
+ static readonly unihexCache: AsyncLoadingCache<CacheKey, UnihexFile>;
2680
2762
  static readonly fontCache: AsyncLoadingCache<CacheKey, BitmapFont>;
2681
2763
  static readonly bannerPatternCache: AsyncLoadingCache<CacheKey, BannerPattern>;
2682
2764
  static readonly mineRenderDataCache: AsyncLoadingCache<CacheKey, unknown>;
@@ -3792,6 +3874,7 @@ interface SectionTemplateData {
3792
3874
  uvs: Float32Array;
3793
3875
  uvBounds: Float32Array;
3794
3876
  colors: Float32Array;
3877
+ shade?: Float32Array;
3795
3878
  indices: Uint16Array;
3796
3879
  cullFaces: Uint8Array;
3797
3880
  biomeTint?: Uint8Array;
@@ -3855,6 +3938,7 @@ interface SectionGeometryPage {
3855
3938
  uvs: Float32Array;
3856
3939
  uvBounds: Float32Array;
3857
3940
  colors: Float32Array;
3941
+ shade: Float32Array;
3858
3942
  indices: Uint32Array;
3859
3943
  /** Owning section cell for each quad; each quad contributes two consecutive triangles. */
3860
3944
  blockIndices: Uint16Array;
@@ -3994,7 +4078,7 @@ declare class Chunk<SectionMeshing extends boolean = false> {
3994
4078
  private ambientOcclusionCells?;
3995
4079
  private readonly blockChanges;
3996
4080
  private biomeChange?;
3997
- 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, biomeBlend?: (() => BiomeBlend | undefined) | undefined);
4081
+ constructor(scene: MineRenderScene, x: number, y: number, z: number, onBlocksChanged?: ((positions: Vector3[], deferCulling?: boolean) => 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, biomeBlend?: (() => BiomeBlend | undefined) | undefined);
3998
4082
  /** Finds the nearest owned block hit across sections, testing each shared mesh once. */
3999
4083
  static raycast<SectionMeshing extends boolean>(chunks: Iterable<Chunk<SectionMeshing>>, raycaster: Raycaster): WorldBlockIntersection | undefined;
4000
4084
  getBlockAt(x: number, y: number, z: number): Maybe<BlockInfo<SectionMeshing>>;
@@ -4006,11 +4090,14 @@ declare class Chunk<SectionMeshing extends boolean = false> {
4006
4090
  getBiomeAt(pos: TripleArray): Maybe<string>;
4007
4091
  /** Copies 64 biome IDs in x + z * 4 + y * 16 order and refreshes placed blocks. Omit the array to clear biome data. */
4008
4092
  setBiomes(biomes?: readonly string[]): Promise<void>;
4009
- /** Rebuilds biome-tinted blocks while preserving hidden blocks and unrelated render objects. */
4093
+ /**
4094
+ * Rebuilds biome-tinted blocks while preserving hidden blocks and unrelated render objects.
4095
+ * The owning world can defer neighbor culling until all affected chunks are refreshed.
4096
+ */
4010
4097
  refreshBiomes(columns?: readonly {
4011
4098
  x: number;
4012
4099
  z: number;
4013
- }[]): Promise<void>;
4100
+ }[], deferCulling?: boolean): Promise<void>;
4014
4101
  private refreshBiomeBlocks;
4015
4102
  /**
4016
4103
  * Places a block at integer world block coordinates. Pass `undefined` to remove it.
@@ -4021,7 +4108,7 @@ declare class Chunk<SectionMeshing extends boolean = false> {
4021
4108
  /**
4022
4109
  * Places a block at integer chunk-local coordinates from 0 to 15.
4023
4110
  */
4024
- setBlockInChunkAt(pos: Vector3, block?: Block, worldPos?: Vector3, onBlocksChanged?: ((positions: Vector3[]) => Promise<void>) | undefined): Promise<Maybe<BlockInfo<SectionMeshing>>>;
4111
+ setBlockInChunkAt(pos: Vector3, block?: Block, worldPos?: Vector3, onBlocksChanged?: ((positions: Vector3[], deferCulling?: boolean) => Promise<void>) | undefined): Promise<Maybe<BlockInfo<SectionMeshing>>>;
4025
4112
  /** Places cells in input order and returns changed world positions without refreshing neighbors. */
4026
4113
  placeBlocks(blocks: readonly {
4027
4114
  index: number;
@@ -4186,6 +4273,14 @@ declare class MineRenderWorld<SectionMeshing extends boolean = false> {
4186
4273
  * Coordinates match AnvilChunk.x/z, not block positions. Missing columns are ignored.
4187
4274
  */
4188
4275
  unloadChunkColumn(x: number, z: number): Promise<void>;
4276
+ /**
4277
+ * Removes chunk columns together and refreshes surviving neighbors once.
4278
+ * Coordinates are absolute chunk columns. Duplicate and missing columns are ignored.
4279
+ */
4280
+ unloadChunkColumns(positions: readonly {
4281
+ x: number;
4282
+ z: number;
4283
+ }[]): Promise<void>;
4189
4284
  private clearChunkColumn;
4190
4285
  private markSectionChanged;
4191
4286
  /** Removes all chunks and releases their blocks, section meshes, and owned entities. */
@@ -4263,7 +4358,7 @@ declare class WorldStreamer {
4263
4358
  private running?;
4264
4359
  private disposal?;
4265
4360
  private disposed;
4266
- constructor(world: Pick<MineRenderWorld<boolean>, "placeChunk" | "unloadChunkColumn">, source: WorldChunkSource, options?: WorldStreamerOptions);
4361
+ constructor(world: Pick<MineRenderWorld<boolean>, "placeChunk" | "unloadChunkColumns">, source: WorldChunkSource, options?: WorldStreamerOptions);
4267
4362
  /** Returns absolute coordinates of successfully placed columns, including retained columns. */
4268
4363
  get loadedChunks(): readonly {
4269
4364
  x: number;
@@ -4297,7 +4392,7 @@ declare class WorldStreamer {
4297
4392
  dispose(): Promise<void>;
4298
4393
  private drain;
4299
4394
  private needsLoad;
4300
- private unload;
4395
+ private unloadMany;
4301
4396
  private validateChunk;
4302
4397
  private within;
4303
4398
  private key;
@@ -4376,4 +4471,4 @@ declare class NodeRenderer extends Renderer {
4376
4471
  dispose(): void;
4377
4472
  }
4378
4473
 
4379
- 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 RenameKind, Renames, 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 WorldBlockIntersection, type WorldChunkSource, type WorldEntityIntersection, 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 };
4474
+ 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 BinaryAsset, 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, type LogHandler, type LogLevel, type LogThreshold, type Logger, Logging, type LoggingOptions, 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 RenameKind, Renames, 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 WorldBlockIntersection, type WorldChunkSource, type WorldEntityIntersection, 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, logger, 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, validateAnimationWeights, yieldToEventLoop };