minerender 2.1.0-alpha.52 → 2.1.0-alpha.54

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.
@@ -1,5 +1,5 @@
1
1
  import * as three from 'three';
2
- import { Vector3, PixelFormat, BoxGeometry, Material, MeshBasicMaterial, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, BufferGeometry, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Box2, Scene, Object3DEventMap, Texture, Camera, MOUSE, TOUCH, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points, Group } from 'three';
2
+ import { Vector3, PixelFormat, BoxGeometry, Material, ColorRepresentation, MeshBasicMaterial, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, BufferGeometry, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Box2, Scene, Object3DEventMap, Texture, Camera, MOUSE, TOUCH, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points, Group } from 'three';
3
3
  import * as nodeCanvas from 'canvas';
4
4
  import { ImageData as ImageData$1, CanvasRenderingContext2D } from 'canvas';
5
5
  import { Buffer } from 'buffer';
@@ -199,11 +199,98 @@ interface ListAsset extends MinecraftAsset {
199
199
  files: string[];
200
200
  }
201
201
 
202
+ interface EntityLayer {
203
+ key: BasicAssetKey;
204
+ texture?: AssetKey;
205
+ layer: EntityModelLayer;
206
+ /** How this draw is rendered; defaults to the geometry layer's own mode, then `cutout`. */
207
+ render?: EntityRenderMode;
208
+ /** Label of the state colour that multiplies the texture, from the pass that selected this draw. */
209
+ tint?: string;
210
+ }
211
+ interface EntityModel extends EntityLayer {
212
+ id: string;
213
+ /** Root transform from the dataset; see {@link EntityTransformOp}. */
214
+ transform?: EntityTransformOp[];
215
+ /**
216
+ * Selected draws in draw order; the top-level fields describe the first selection.
217
+ * A key is the geometry layer's name; a further draw of the same geometry (a pass with another texture) is keyed `<layer>#<n>`, from 2.
218
+ */
219
+ layers?: Record<string, EntityLayer>;
220
+ }
221
+ interface EntityModelFile extends MinecraftAsset {
222
+ id: string;
223
+ transform?: EntityTransformOp[];
224
+ layers: Record<string, EntityModelLayer>;
225
+ /** Extra draws vanilla adds on top of `main`, in draw order. */
226
+ passes?: EntityModelPass[];
227
+ }
228
+ /** Vanilla render type of a draw; see the dataset README for the mode table. */
229
+ type EntityRenderMode = "cutout" | "cutout_cull" | "cutout_z_offset" | "solid" | "translucent" | "translucent_emissive" | "eyes" | "energy_swirl" | "breeze_wind" | "water_mask";
230
+ interface EntityModelPass {
231
+ /** Geometry layer of the same file; a pass on `main` draws that geometry again. */
232
+ layer: string;
233
+ /** Present only when it differs from the layer's own. */
234
+ textureLocation?: string;
235
+ /** Present only when it differs from the layer's own. */
236
+ render?: EntityRenderMode;
237
+ /** Entity state that enables the draw, e.g. `powered`; without it the pass is always drawn. */
238
+ when?: string;
239
+ /** State colour that multiplies the texture, e.g. `wool_color`. */
240
+ tint?: string;
241
+ }
242
+ /**
243
+ * One operation vanilla's renderer applies before drawing a model, in call order:
244
+ * each one is applied on top of the previous, so the last reaches the vertices first.
245
+ * Translations use model units and rotations use radians, like part poses.
246
+ */
247
+ type EntityTransformOp = {
248
+ scale: [number, number, number];
249
+ } | {
250
+ translate: [number, number, number];
251
+ } | {
252
+ rotate: [number, number, number];
253
+ };
254
+ interface EntityModelLayer {
255
+ texture: [number, number];
256
+ textureLocation?: string;
257
+ /** Omitted for `cutout`. */
258
+ render?: EntityRenderMode;
259
+ root: EntityModelPart;
260
+ }
261
+ interface EntityModelPart {
262
+ pose: {
263
+ offset: [number, number, number];
264
+ rotation: [number, number, number];
265
+ scale?: [number, number, number];
266
+ };
267
+ texture?: [number, number];
268
+ cubes: EntityModelCube[];
269
+ children: Record<string, EntityModelPart>;
270
+ }
271
+ interface EntityModelCube {
272
+ origin: [number, number, number];
273
+ size: [number, number, number];
274
+ uv: [number, number];
275
+ grow?: [number, number, number];
276
+ mirror?: boolean;
277
+ }
278
+
202
279
  declare class Materials {
203
280
  private static readonly MISSING_TEXTURE_SRC;
204
281
  static get MISSING_TEXTURE(): Material;
205
282
  static createImage(key: MaterialKey): Material;
206
283
  static createBasicCanvasMaterial(canvas: HTMLCanvasElement, transparent?: boolean, shade?: boolean): Material;
284
+ /** Whether vanilla's render type for the mode culls back faces. */
285
+ static entityModeCulls(mode?: EntityRenderMode): boolean;
286
+ /** UV offset per tick of entity age for the scrolling modes, as vanilla's texture matrix applies it. */
287
+ static entityModeScroll(mode?: EntityRenderMode): [number, number] | undefined;
288
+ /**
289
+ * Entity material for one of vanilla's render types. Entities are unlit here, so the lit and full-bright modes
290
+ * differ only in blending and depth state. Culling is not a material property: {@link entityModeCulls} decides
291
+ * whether the geometry gets inward faces.
292
+ */
293
+ static createEntityCanvasMaterial(canvas: HTMLCanvasElement, mode?: EntityRenderMode, tint?: ColorRepresentation): MeshBasicMaterial;
207
294
  static createGuiCanvasMaterial(canvas: HTMLCanvasElement): MeshBasicMaterial;
208
295
  static createShadedCanvasMaterial(canvas: HTMLCanvasElement, transparent?: boolean, shade?: boolean): Material;
209
296
  static getImage(key: MaterialKey): Material;
@@ -734,47 +821,12 @@ declare class DefaultBlockStates implements MinecraftAsset {
734
821
  [k: string]: BlockStatePropertyDefaults;
735
822
  }
736
823
 
737
- interface EntityLayer {
738
- key: BasicAssetKey;
739
- texture?: AssetKey;
740
- layer: EntityModelLayer;
741
- }
742
- interface EntityModel extends EntityLayer {
743
- id: string;
744
- /** Selected layers; the top-level fields describe the first selection. */
745
- layers?: Record<string, EntityLayer>;
746
- }
747
- interface EntityModelFile extends MinecraftAsset {
748
- id: string;
749
- layers: Record<string, EntityModelLayer>;
750
- }
751
- interface EntityModelLayer {
752
- texture: [number, number];
753
- textureLocation?: string;
754
- root: EntityModelPart;
755
- }
756
- interface EntityModelPart {
757
- pose: {
758
- offset: [number, number, number];
759
- rotation: [number, number, number];
760
- scale?: [number, number, number];
761
- };
762
- texture?: [number, number];
763
- cubes: EntityModelCube[];
764
- children: Record<string, EntityModelPart>;
765
- }
766
- interface EntityModelCube {
767
- origin: [number, number, number];
768
- size: [number, number, number];
769
- uv: [number, number];
770
- grow?: [number, number, number];
771
- mirror?: boolean;
772
- }
773
-
774
824
  declare class Entities {
775
825
  static getEntityList(): Promise<string[]>;
776
826
  private static getModelFile;
777
827
  static getLayerList(modelKey: BasicAssetKey): Promise<string[]>;
828
+ /** The dataset's extra draws on top of `main`; their `when` labels are the states `EntityModelOptions.when` can enable. */
829
+ static getPassList(modelKey: BasicAssetKey): Promise<EntityModelPass[]>;
778
830
  static getEntity(modelKey: BasicAssetKey, textureKey?: BasicAssetKey, options?: EntityModelOptions): Promise<Maybe<EntityModel>>;
779
831
  static resolveTexture(modelKey: BasicAssetKey): Promise<Maybe<AssetKey>>;
780
832
  /** @deprecated Use getEntityList(); block entities share the entity dataset. */
@@ -784,9 +836,14 @@ declare class Entities {
784
836
  }
785
837
  interface EntityModelOptions {
786
838
  layer?: string;
787
- /** Layer names in draw order; defaults to layer or "main". */
839
+ /** Layer names in draw order; an explicit selection draws exactly these layers and no dataset passes. */
788
840
  layers?: string[];
789
- /** Per-layer texture overrides. The positional texture key applies to the first selected layer. */
841
+ /**
842
+ * Entity states that enable the dataset's conditional passes, e.g. `["powered"]` for a charged creeper.
843
+ * Without `layer`/`layers`, `main` and every unconditional pass are always drawn.
844
+ */
845
+ when?: string[];
846
+ /** Per-layer texture overrides, keyed like `EntityModel.layers`. The positional texture key applies to the first selected layer. */
790
847
  textures?: Record<string, BasicAssetKey>;
791
848
  }
792
849
 
@@ -996,9 +1053,18 @@ declare class EntityObject extends SceneObject {
996
1053
  static readonly DEFAULT_OPTIONS: EntityObjectOptions;
997
1054
  readonly options: EntityObjectOptions;
998
1055
  private meshesCreated;
1056
+ /** Scrolling materials are owned: their texture offset follows this entity's age. */
1057
+ private readonly scrollMaterials;
1058
+ private scrollTicker;
1059
+ /** Entity age in ticks, as vanilla's `ageInTicks`; drives the scrolling render modes. */
1060
+ age: number;
999
1061
  constructor(entity: EntityModel, options?: Partial<EntityObjectOptions>);
1000
1062
  init(): Promise<void>;
1001
1063
  dispose(): void;
1064
+ disposeAndRemoveAllChildren(): void;
1065
+ private clearScrollMaterials;
1066
+ /** Applies the entity age to the scrolling materials; the ticker calls this 20 times per second. */
1067
+ private updateScroll;
1002
1068
  getLayerGroup(name: string): Maybe<Object3D>;
1003
1069
  getGroupByName(name: string, layerName?: string): Maybe<Object3D>;
1004
1070
  getMeshByName(name: string, layerName?: string): Maybe<Mesh>;
@@ -1010,21 +1076,36 @@ declare class EntityObject extends SceneObject {
1010
1076
  protected applyTextures(): Promise<void>;
1011
1077
  }
1012
1078
  interface EntityObjectOptions extends SceneObjectOptions {
1079
+ /**
1080
+ * `true` applies only vanilla's entity flip, scale (-1, -1, 1); `false` keeps raw model space.
1081
+ * By default the model's dataset transform is used, or the flip for models without one.
1082
+ */
1013
1083
  flip?: boolean;
1084
+ /** Colours for the dataset's tint labels, e.g. `{ wool_color: 0xf9801d }`; a pass whose label is absent stays untinted. */
1085
+ tints?: Record<string, ColorRepresentation>;
1014
1086
  }
1015
1087
  declare function isEntityObject(obj: any): obj is EntityObject;
1016
1088
 
1017
- /** A texture layer in GUI pixels. Later layers draw above earlier layers. */
1018
- interface GuiLayer {
1089
+ /** GUI layers use pixel coordinates. Later layers draw above earlier layers. */
1090
+ type GuiLayer = GuiTextureLayer | GuiItemLayer;
1091
+ interface GuiLayerLayout {
1019
1092
  name?: string;
1020
- texture: AssetKey | string;
1021
- /** Source-image pixels: [x, y, width, height], measured from the top left. */
1022
- crop?: [number, number, number, number];
1023
1093
  /** Top-left position; x grows right and y grows down. Defaults to [0, 0]. */
1024
1094
  position?: [number, number];
1025
- /** Output width and height. Defaults to the crop or full image size. */
1095
+ /** Output width and height; defaults to the texture crop size or [16, 16] for items. */
1026
1096
  size?: [number, number];
1027
1097
  }
1098
+ interface GuiTextureLayer extends GuiLayerLayout {
1099
+ texture: AssetKey | string;
1100
+ /** Source-image pixels: [x, y, width, height], measured from the top left. */
1101
+ crop?: [number, number, number, number];
1102
+ }
1103
+ interface GuiItemLayer extends GuiLayerLayout {
1104
+ /** Model key, such as minecraft:item/stone; uses the model's GUI display pose. */
1105
+ item: AssetKey | string;
1106
+ /** sRGB 0xRRGGBB colors by face tint index; omitted indices stay white. */
1107
+ tints?: Record<number, number>;
1108
+ }
1028
1109
 
1029
1110
  declare class GuiObject extends SceneObject {
1030
1111
  readonly textureLayers: readonly GuiLayer[];
@@ -1036,6 +1117,7 @@ declare class GuiObject extends SceneObject {
1036
1117
  private initialized;
1037
1118
  constructor(textureLayers: readonly GuiLayer[], options?: Partial<GuiObjectOptions>);
1038
1119
  init(): Promise<void>;
1120
+ private createItem;
1039
1121
  private loadMaterial;
1040
1122
  disposeAndRemoveAllChildren(): void;
1041
1123
  }
@@ -1547,6 +1629,34 @@ declare class SceneExporter {
1547
1629
 
1548
1630
  declare class GuiHelper {
1549
1631
  static inventorySlot(slot: number | [number, number], origin?: [number, number], offset?: [number, number], rowSize?: number): [number, number];
1632
+ /** Creates crafting-table layers for ingredients and the result; stack counts are not drawn. */
1633
+ static recipe(recipe: GuiRecipe, options?: GuiRecipeOptions): GuiLayer[];
1634
+ }
1635
+ type GuiRecipeIngredientValue = string | {
1636
+ item: string;
1637
+ } | {
1638
+ tag: string;
1639
+ };
1640
+ type GuiRecipeIngredient = GuiRecipeIngredientValue | readonly GuiRecipeIngredientValue[];
1641
+ type GuiRecipe = ({
1642
+ type: "minecraft:crafting_shaped" | "crafting_shaped";
1643
+ pattern: readonly string[];
1644
+ key: Readonly<Record<string, GuiRecipeIngredient>>;
1645
+ } | {
1646
+ type: "minecraft:crafting_shapeless" | "crafting_shapeless";
1647
+ ingredients: readonly GuiRecipeIngredient[];
1648
+ }) & {
1649
+ result: {
1650
+ id: string;
1651
+ count?: number;
1652
+ } | {
1653
+ item: string;
1654
+ count?: number;
1655
+ };
1656
+ };
1657
+ interface GuiRecipeOptions {
1658
+ /** Selects a concrete item ID or model AssetKey for a tag or alternatives array. */
1659
+ resolveIngredient?: (ingredient: GuiRecipeIngredient) => string | AssetKey;
1550
1660
  }
1551
1661
 
1552
1662
  declare class OrbitControls {
@@ -2073,4 +2183,4 @@ declare class BrowserCache extends PersistentCache<LocalForage> {
2073
2183
  */
2074
2184
  declare function probeImageSize(data: Uint8Array): ImageSizeInfo;
2075
2185
 
2076
- export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, AnvilParser, type AnvilRegion, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, 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, BrowserCache, BrowserEnv, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, type EntityLayer, type EntityModel, type EntityModelCube, type EntityModelFile, type EntityModelLayer, type EntityModelOptions, type EntityModelPart, EntityObject, type EntityObjectOptions, Env, type EnvProvider, type ExtractableImageData, type FluidKind, FluidModelObject, type FluidSample, type FluidSampler, type FrameCallback, type FromTo, Geometries, GuiHelper, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, 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, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererFrame, type RendererOptions, type RequestConfig, RequestError, type RequestResponse, Requests, type ResponseParser, SKIN_PARTS, SceneExporter, type SceneGLTFExportOptions, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createFluidGeometry, createImage, estimateBytesUsed, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, probeImageSize, registerBrowserEnv, sampleFluid, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas };
2186
+ export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, AnvilParser, type AnvilRegion, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, 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, BrowserCache, BrowserEnv, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, 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 FluidSample, type FluidSampler, type FrameCallback, type FromTo, Geometries, GuiHelper, type GuiItemLayer, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, type GuiRecipe, type GuiRecipeIngredient, type GuiRecipeOptions, type GuiTextureLayer, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, 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, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererFrame, type RendererOptions, type RequestConfig, RequestError, type RequestResponse, Requests, type ResponseParser, SKIN_PARTS, SceneExporter, type SceneGLTFExportOptions, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createFluidGeometry, createImage, estimateBytesUsed, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, probeImageSize, registerBrowserEnv, sampleFluid, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas };
@@ -1,5 +1,5 @@
1
1
  import * as three from 'three';
2
- import { Vector3, PixelFormat, BoxGeometry, Material, MeshBasicMaterial, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, BufferGeometry, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Box2, Scene, Object3DEventMap, Texture, Camera, MOUSE, TOUCH, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points, Group } from 'three';
2
+ import { Vector3, PixelFormat, BoxGeometry, Material, ColorRepresentation, MeshBasicMaterial, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, BufferGeometry, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Box2, Scene, Object3DEventMap, Texture, Camera, MOUSE, TOUCH, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points, Group } from 'three';
3
3
  import * as nodeCanvas from 'canvas';
4
4
  import { ImageData as ImageData$1, CanvasRenderingContext2D } from 'canvas';
5
5
  import { Buffer } from 'buffer';
@@ -199,11 +199,98 @@ interface ListAsset extends MinecraftAsset {
199
199
  files: string[];
200
200
  }
201
201
 
202
+ interface EntityLayer {
203
+ key: BasicAssetKey;
204
+ texture?: AssetKey;
205
+ layer: EntityModelLayer;
206
+ /** How this draw is rendered; defaults to the geometry layer's own mode, then `cutout`. */
207
+ render?: EntityRenderMode;
208
+ /** Label of the state colour that multiplies the texture, from the pass that selected this draw. */
209
+ tint?: string;
210
+ }
211
+ interface EntityModel extends EntityLayer {
212
+ id: string;
213
+ /** Root transform from the dataset; see {@link EntityTransformOp}. */
214
+ transform?: EntityTransformOp[];
215
+ /**
216
+ * Selected draws in draw order; the top-level fields describe the first selection.
217
+ * A key is the geometry layer's name; a further draw of the same geometry (a pass with another texture) is keyed `<layer>#<n>`, from 2.
218
+ */
219
+ layers?: Record<string, EntityLayer>;
220
+ }
221
+ interface EntityModelFile extends MinecraftAsset {
222
+ id: string;
223
+ transform?: EntityTransformOp[];
224
+ layers: Record<string, EntityModelLayer>;
225
+ /** Extra draws vanilla adds on top of `main`, in draw order. */
226
+ passes?: EntityModelPass[];
227
+ }
228
+ /** Vanilla render type of a draw; see the dataset README for the mode table. */
229
+ type EntityRenderMode = "cutout" | "cutout_cull" | "cutout_z_offset" | "solid" | "translucent" | "translucent_emissive" | "eyes" | "energy_swirl" | "breeze_wind" | "water_mask";
230
+ interface EntityModelPass {
231
+ /** Geometry layer of the same file; a pass on `main` draws that geometry again. */
232
+ layer: string;
233
+ /** Present only when it differs from the layer's own. */
234
+ textureLocation?: string;
235
+ /** Present only when it differs from the layer's own. */
236
+ render?: EntityRenderMode;
237
+ /** Entity state that enables the draw, e.g. `powered`; without it the pass is always drawn. */
238
+ when?: string;
239
+ /** State colour that multiplies the texture, e.g. `wool_color`. */
240
+ tint?: string;
241
+ }
242
+ /**
243
+ * One operation vanilla's renderer applies before drawing a model, in call order:
244
+ * each one is applied on top of the previous, so the last reaches the vertices first.
245
+ * Translations use model units and rotations use radians, like part poses.
246
+ */
247
+ type EntityTransformOp = {
248
+ scale: [number, number, number];
249
+ } | {
250
+ translate: [number, number, number];
251
+ } | {
252
+ rotate: [number, number, number];
253
+ };
254
+ interface EntityModelLayer {
255
+ texture: [number, number];
256
+ textureLocation?: string;
257
+ /** Omitted for `cutout`. */
258
+ render?: EntityRenderMode;
259
+ root: EntityModelPart;
260
+ }
261
+ interface EntityModelPart {
262
+ pose: {
263
+ offset: [number, number, number];
264
+ rotation: [number, number, number];
265
+ scale?: [number, number, number];
266
+ };
267
+ texture?: [number, number];
268
+ cubes: EntityModelCube[];
269
+ children: Record<string, EntityModelPart>;
270
+ }
271
+ interface EntityModelCube {
272
+ origin: [number, number, number];
273
+ size: [number, number, number];
274
+ uv: [number, number];
275
+ grow?: [number, number, number];
276
+ mirror?: boolean;
277
+ }
278
+
202
279
  declare class Materials {
203
280
  private static readonly MISSING_TEXTURE_SRC;
204
281
  static get MISSING_TEXTURE(): Material;
205
282
  static createImage(key: MaterialKey): Material;
206
283
  static createBasicCanvasMaterial(canvas: HTMLCanvasElement, transparent?: boolean, shade?: boolean): Material;
284
+ /** Whether vanilla's render type for the mode culls back faces. */
285
+ static entityModeCulls(mode?: EntityRenderMode): boolean;
286
+ /** UV offset per tick of entity age for the scrolling modes, as vanilla's texture matrix applies it. */
287
+ static entityModeScroll(mode?: EntityRenderMode): [number, number] | undefined;
288
+ /**
289
+ * Entity material for one of vanilla's render types. Entities are unlit here, so the lit and full-bright modes
290
+ * differ only in blending and depth state. Culling is not a material property: {@link entityModeCulls} decides
291
+ * whether the geometry gets inward faces.
292
+ */
293
+ static createEntityCanvasMaterial(canvas: HTMLCanvasElement, mode?: EntityRenderMode, tint?: ColorRepresentation): MeshBasicMaterial;
207
294
  static createGuiCanvasMaterial(canvas: HTMLCanvasElement): MeshBasicMaterial;
208
295
  static createShadedCanvasMaterial(canvas: HTMLCanvasElement, transparent?: boolean, shade?: boolean): Material;
209
296
  static getImage(key: MaterialKey): Material;
@@ -734,47 +821,12 @@ declare class DefaultBlockStates implements MinecraftAsset {
734
821
  [k: string]: BlockStatePropertyDefaults;
735
822
  }
736
823
 
737
- interface EntityLayer {
738
- key: BasicAssetKey;
739
- texture?: AssetKey;
740
- layer: EntityModelLayer;
741
- }
742
- interface EntityModel extends EntityLayer {
743
- id: string;
744
- /** Selected layers; the top-level fields describe the first selection. */
745
- layers?: Record<string, EntityLayer>;
746
- }
747
- interface EntityModelFile extends MinecraftAsset {
748
- id: string;
749
- layers: Record<string, EntityModelLayer>;
750
- }
751
- interface EntityModelLayer {
752
- texture: [number, number];
753
- textureLocation?: string;
754
- root: EntityModelPart;
755
- }
756
- interface EntityModelPart {
757
- pose: {
758
- offset: [number, number, number];
759
- rotation: [number, number, number];
760
- scale?: [number, number, number];
761
- };
762
- texture?: [number, number];
763
- cubes: EntityModelCube[];
764
- children: Record<string, EntityModelPart>;
765
- }
766
- interface EntityModelCube {
767
- origin: [number, number, number];
768
- size: [number, number, number];
769
- uv: [number, number];
770
- grow?: [number, number, number];
771
- mirror?: boolean;
772
- }
773
-
774
824
  declare class Entities {
775
825
  static getEntityList(): Promise<string[]>;
776
826
  private static getModelFile;
777
827
  static getLayerList(modelKey: BasicAssetKey): Promise<string[]>;
828
+ /** The dataset's extra draws on top of `main`; their `when` labels are the states `EntityModelOptions.when` can enable. */
829
+ static getPassList(modelKey: BasicAssetKey): Promise<EntityModelPass[]>;
778
830
  static getEntity(modelKey: BasicAssetKey, textureKey?: BasicAssetKey, options?: EntityModelOptions): Promise<Maybe<EntityModel>>;
779
831
  static resolveTexture(modelKey: BasicAssetKey): Promise<Maybe<AssetKey>>;
780
832
  /** @deprecated Use getEntityList(); block entities share the entity dataset. */
@@ -784,9 +836,14 @@ declare class Entities {
784
836
  }
785
837
  interface EntityModelOptions {
786
838
  layer?: string;
787
- /** Layer names in draw order; defaults to layer or "main". */
839
+ /** Layer names in draw order; an explicit selection draws exactly these layers and no dataset passes. */
788
840
  layers?: string[];
789
- /** Per-layer texture overrides. The positional texture key applies to the first selected layer. */
841
+ /**
842
+ * Entity states that enable the dataset's conditional passes, e.g. `["powered"]` for a charged creeper.
843
+ * Without `layer`/`layers`, `main` and every unconditional pass are always drawn.
844
+ */
845
+ when?: string[];
846
+ /** Per-layer texture overrides, keyed like `EntityModel.layers`. The positional texture key applies to the first selected layer. */
790
847
  textures?: Record<string, BasicAssetKey>;
791
848
  }
792
849
 
@@ -996,9 +1053,18 @@ declare class EntityObject extends SceneObject {
996
1053
  static readonly DEFAULT_OPTIONS: EntityObjectOptions;
997
1054
  readonly options: EntityObjectOptions;
998
1055
  private meshesCreated;
1056
+ /** Scrolling materials are owned: their texture offset follows this entity's age. */
1057
+ private readonly scrollMaterials;
1058
+ private scrollTicker;
1059
+ /** Entity age in ticks, as vanilla's `ageInTicks`; drives the scrolling render modes. */
1060
+ age: number;
999
1061
  constructor(entity: EntityModel, options?: Partial<EntityObjectOptions>);
1000
1062
  init(): Promise<void>;
1001
1063
  dispose(): void;
1064
+ disposeAndRemoveAllChildren(): void;
1065
+ private clearScrollMaterials;
1066
+ /** Applies the entity age to the scrolling materials; the ticker calls this 20 times per second. */
1067
+ private updateScroll;
1002
1068
  getLayerGroup(name: string): Maybe<Object3D>;
1003
1069
  getGroupByName(name: string, layerName?: string): Maybe<Object3D>;
1004
1070
  getMeshByName(name: string, layerName?: string): Maybe<Mesh>;
@@ -1010,21 +1076,36 @@ declare class EntityObject extends SceneObject {
1010
1076
  protected applyTextures(): Promise<void>;
1011
1077
  }
1012
1078
  interface EntityObjectOptions extends SceneObjectOptions {
1079
+ /**
1080
+ * `true` applies only vanilla's entity flip, scale (-1, -1, 1); `false` keeps raw model space.
1081
+ * By default the model's dataset transform is used, or the flip for models without one.
1082
+ */
1013
1083
  flip?: boolean;
1084
+ /** Colours for the dataset's tint labels, e.g. `{ wool_color: 0xf9801d }`; a pass whose label is absent stays untinted. */
1085
+ tints?: Record<string, ColorRepresentation>;
1014
1086
  }
1015
1087
  declare function isEntityObject(obj: any): obj is EntityObject;
1016
1088
 
1017
- /** A texture layer in GUI pixels. Later layers draw above earlier layers. */
1018
- interface GuiLayer {
1089
+ /** GUI layers use pixel coordinates. Later layers draw above earlier layers. */
1090
+ type GuiLayer = GuiTextureLayer | GuiItemLayer;
1091
+ interface GuiLayerLayout {
1019
1092
  name?: string;
1020
- texture: AssetKey | string;
1021
- /** Source-image pixels: [x, y, width, height], measured from the top left. */
1022
- crop?: [number, number, number, number];
1023
1093
  /** Top-left position; x grows right and y grows down. Defaults to [0, 0]. */
1024
1094
  position?: [number, number];
1025
- /** Output width and height. Defaults to the crop or full image size. */
1095
+ /** Output width and height; defaults to the texture crop size or [16, 16] for items. */
1026
1096
  size?: [number, number];
1027
1097
  }
1098
+ interface GuiTextureLayer extends GuiLayerLayout {
1099
+ texture: AssetKey | string;
1100
+ /** Source-image pixels: [x, y, width, height], measured from the top left. */
1101
+ crop?: [number, number, number, number];
1102
+ }
1103
+ interface GuiItemLayer extends GuiLayerLayout {
1104
+ /** Model key, such as minecraft:item/stone; uses the model's GUI display pose. */
1105
+ item: AssetKey | string;
1106
+ /** sRGB 0xRRGGBB colors by face tint index; omitted indices stay white. */
1107
+ tints?: Record<number, number>;
1108
+ }
1028
1109
 
1029
1110
  declare class GuiObject extends SceneObject {
1030
1111
  readonly textureLayers: readonly GuiLayer[];
@@ -1036,6 +1117,7 @@ declare class GuiObject extends SceneObject {
1036
1117
  private initialized;
1037
1118
  constructor(textureLayers: readonly GuiLayer[], options?: Partial<GuiObjectOptions>);
1038
1119
  init(): Promise<void>;
1120
+ private createItem;
1039
1121
  private loadMaterial;
1040
1122
  disposeAndRemoveAllChildren(): void;
1041
1123
  }
@@ -1547,6 +1629,34 @@ declare class SceneExporter {
1547
1629
 
1548
1630
  declare class GuiHelper {
1549
1631
  static inventorySlot(slot: number | [number, number], origin?: [number, number], offset?: [number, number], rowSize?: number): [number, number];
1632
+ /** Creates crafting-table layers for ingredients and the result; stack counts are not drawn. */
1633
+ static recipe(recipe: GuiRecipe, options?: GuiRecipeOptions): GuiLayer[];
1634
+ }
1635
+ type GuiRecipeIngredientValue = string | {
1636
+ item: string;
1637
+ } | {
1638
+ tag: string;
1639
+ };
1640
+ type GuiRecipeIngredient = GuiRecipeIngredientValue | readonly GuiRecipeIngredientValue[];
1641
+ type GuiRecipe = ({
1642
+ type: "minecraft:crafting_shaped" | "crafting_shaped";
1643
+ pattern: readonly string[];
1644
+ key: Readonly<Record<string, GuiRecipeIngredient>>;
1645
+ } | {
1646
+ type: "minecraft:crafting_shapeless" | "crafting_shapeless";
1647
+ ingredients: readonly GuiRecipeIngredient[];
1648
+ }) & {
1649
+ result: {
1650
+ id: string;
1651
+ count?: number;
1652
+ } | {
1653
+ item: string;
1654
+ count?: number;
1655
+ };
1656
+ };
1657
+ interface GuiRecipeOptions {
1658
+ /** Selects a concrete item ID or model AssetKey for a tag or alternatives array. */
1659
+ resolveIngredient?: (ingredient: GuiRecipeIngredient) => string | AssetKey;
1550
1660
  }
1551
1661
 
1552
1662
  declare class OrbitControls {
@@ -2073,4 +2183,4 @@ declare class BrowserCache extends PersistentCache<LocalForage> {
2073
2183
  */
2074
2184
  declare function probeImageSize(data: Uint8Array): ImageSizeInfo;
2075
2185
 
2076
- export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, AnvilParser, type AnvilRegion, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, 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, BrowserCache, BrowserEnv, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, type EntityLayer, type EntityModel, type EntityModelCube, type EntityModelFile, type EntityModelLayer, type EntityModelOptions, type EntityModelPart, EntityObject, type EntityObjectOptions, Env, type EnvProvider, type ExtractableImageData, type FluidKind, FluidModelObject, type FluidSample, type FluidSampler, type FrameCallback, type FromTo, Geometries, GuiHelper, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, 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, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererFrame, type RendererOptions, type RequestConfig, RequestError, type RequestResponse, Requests, type ResponseParser, SKIN_PARTS, SceneExporter, type SceneGLTFExportOptions, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createFluidGeometry, createImage, estimateBytesUsed, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, probeImageSize, registerBrowserEnv, sampleFluid, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas };
2186
+ export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, type AnvilChunk, AnvilParser, type AnvilRegion, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoadError, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, 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, BrowserCache, BrowserEnv, CUBE_FACES, CUBE_FACE_OFFSETS, type CacheKey, Caching, type CameraOptions, CanvasImage, type CapeLayout, Chunk, ChunkData, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsOptions, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, DisplayTransforms, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, 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 FluidSample, type FluidSampler, type FrameCallback, type FromTo, Geometries, GuiHelper, type GuiItemLayer, type GuiLayer, GuiLight, GuiObject, type GuiObjectOptions, type GuiRecipe, type GuiRecipeIngredient, type GuiRecipeOptions, type GuiTextureLayer, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, 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, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererFrame, type RendererOptions, type RequestConfig, RequestError, type RequestResponse, Requests, type ResponseParser, SKIN_PARTS, SceneExporter, type SceneGLTFExportOptions, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, SectionMesh, type SectionMeshEntry, type SectionMeshTemplate, SectionModels, type Serializable, type SkinGeometries, SkinImage, SkinObject, type SkinObjectOptions, SkinPart, type SkinTexture, type SkinTextureCoordinates, SkinTextures, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, axisToVec3, base64decode, base64encode, capeTextureSizes, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createFluidGeometry, createImage, estimateBytesUsed, getBlockFluidState, getFluidKind, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isGuiObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, probeImageSize, registerBrowserEnv, sampleFluid, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode, trimCanvas };