minerender 2.1.0-alpha.31 → 2.1.0-alpha.33

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.
package/dist/bundle.js CHANGED
@@ -5332,7 +5332,7 @@ var MineRender = (() => {
5332
5332
  T5[i4] = Math2.abs(Math2.sin(i4 + 1)) * 4294967296 | 0;
5333
5333
  }
5334
5334
  })();
5335
- var MD52 = C_algo.MD5 = Hasher.extend({
5335
+ var MD5 = C_algo.MD5 = Hasher.extend({
5336
5336
  _doReset: function() {
5337
5337
  this._hash = new WordArray.init([
5338
5338
  1732584193,
@@ -5479,8 +5479,8 @@ var MineRender = (() => {
5479
5479
  var n4 = a4 + (c4 ^ (b4 | ~d4)) + x4 + t5;
5480
5480
  return (n4 << s4 | n4 >>> 32 - s4) + b4;
5481
5481
  }
5482
- C5.MD5 = Hasher._createHelper(MD52);
5483
- C5.HmacMD5 = Hasher._createHmacHelper(MD52);
5482
+ C5.MD5 = Hasher._createHelper(MD5);
5483
+ C5.HmacMD5 = Hasher._createHmacHelper(MD5);
5484
5484
  })(Math);
5485
5485
  return CryptoJS2.MD5;
5486
5486
  });
@@ -5509,7 +5509,7 @@ var MineRender = (() => {
5509
5509
  var Hasher = C_lib.Hasher;
5510
5510
  var C_algo = C5.algo;
5511
5511
  var W3 = [];
5512
- var SHA12 = C_algo.SHA1 = Hasher.extend({
5512
+ var SHA1 = C_algo.SHA1 = Hasher.extend({
5513
5513
  _doReset: function() {
5514
5514
  this._hash = new WordArray.init([
5515
5515
  1732584193,
@@ -5573,8 +5573,8 @@ var MineRender = (() => {
5573
5573
  return clone;
5574
5574
  }
5575
5575
  });
5576
- C5.SHA1 = Hasher._createHelper(SHA12);
5577
- C5.HmacSHA1 = Hasher._createHmacHelper(SHA12);
5576
+ C5.SHA1 = Hasher._createHelper(SHA1);
5577
+ C5.HmacSHA1 = Hasher._createHmacHelper(SHA1);
5578
5578
  })();
5579
5579
  return CryptoJS2.SHA1;
5580
5580
  });
@@ -5631,7 +5631,7 @@ var MineRender = (() => {
5631
5631
  }
5632
5632
  })();
5633
5633
  var W3 = [];
5634
- var SHA2562 = C_algo.SHA256 = Hasher.extend({
5634
+ var SHA256 = C_algo.SHA256 = Hasher.extend({
5635
5635
  _doReset: function() {
5636
5636
  this._hash = new WordArray.init(H3.slice(0));
5637
5637
  },
@@ -5697,8 +5697,8 @@ var MineRender = (() => {
5697
5697
  return clone;
5698
5698
  }
5699
5699
  });
5700
- C5.SHA256 = Hasher._createHelper(SHA2562);
5701
- C5.HmacSHA256 = Hasher._createHmacHelper(SHA2562);
5700
+ C5.SHA256 = Hasher._createHelper(SHA256);
5701
+ C5.HmacSHA256 = Hasher._createHmacHelper(SHA256);
5702
5702
  })(Math);
5703
5703
  return CryptoJS2.SHA256;
5704
5704
  });
@@ -5725,8 +5725,8 @@ var MineRender = (() => {
5725
5725
  var C_lib = C5.lib;
5726
5726
  var WordArray = C_lib.WordArray;
5727
5727
  var C_algo = C5.algo;
5728
- var SHA2562 = C_algo.SHA256;
5729
- var SHA224 = C_algo.SHA224 = SHA2562.extend({
5728
+ var SHA256 = C_algo.SHA256;
5729
+ var SHA224 = C_algo.SHA224 = SHA256.extend({
5730
5730
  _doReset: function() {
5731
5731
  this._hash = new WordArray.init([
5732
5732
  3238371032,
@@ -5740,13 +5740,13 @@ var MineRender = (() => {
5740
5740
  ]);
5741
5741
  },
5742
5742
  _doFinalize: function() {
5743
- var hash2 = SHA2562._doFinalize.call(this);
5743
+ var hash2 = SHA256._doFinalize.call(this);
5744
5744
  hash2.sigBytes -= 4;
5745
5745
  return hash2;
5746
5746
  }
5747
5747
  });
5748
- C5.SHA224 = SHA2562._createHelper(SHA224);
5749
- C5.HmacSHA224 = SHA2562._createHmacHelper(SHA224);
5748
+ C5.SHA224 = SHA256._createHelper(SHA224);
5749
+ C5.HmacSHA224 = SHA256._createHmacHelper(SHA224);
5750
5750
  })();
5751
5751
  return CryptoJS2.SHA224;
5752
5752
  });
@@ -5867,7 +5867,7 @@ var MineRender = (() => {
5867
5867
  W3[i4] = X64Word_create();
5868
5868
  }
5869
5869
  })();
5870
- var SHA5122 = C_algo.SHA512 = Hasher.extend({
5870
+ var SHA512 = C_algo.SHA512 = Hasher.extend({
5871
5871
  _doReset: function() {
5872
5872
  this._hash = new X64WordArray.init([
5873
5873
  new X64Word.init(1779033703, 4089235720),
@@ -6030,8 +6030,8 @@ var MineRender = (() => {
6030
6030
  },
6031
6031
  blockSize: 1024 / 32
6032
6032
  });
6033
- C5.SHA512 = Hasher._createHelper(SHA5122);
6034
- C5.HmacSHA512 = Hasher._createHmacHelper(SHA5122);
6033
+ C5.SHA512 = Hasher._createHelper(SHA512);
6034
+ C5.HmacSHA512 = Hasher._createHmacHelper(SHA512);
6035
6035
  })();
6036
6036
  return CryptoJS2.SHA512;
6037
6037
  });
@@ -6059,8 +6059,8 @@ var MineRender = (() => {
6059
6059
  var X64Word = C_x64.Word;
6060
6060
  var X64WordArray = C_x64.WordArray;
6061
6061
  var C_algo = C5.algo;
6062
- var SHA5122 = C_algo.SHA512;
6063
- var SHA384 = C_algo.SHA384 = SHA5122.extend({
6062
+ var SHA512 = C_algo.SHA512;
6063
+ var SHA384 = C_algo.SHA384 = SHA512.extend({
6064
6064
  _doReset: function() {
6065
6065
  this._hash = new X64WordArray.init([
6066
6066
  new X64Word.init(3418070365, 3238371032),
@@ -6074,13 +6074,13 @@ var MineRender = (() => {
6074
6074
  ]);
6075
6075
  },
6076
6076
  _doFinalize: function() {
6077
- var hash2 = SHA5122._doFinalize.call(this);
6077
+ var hash2 = SHA512._doFinalize.call(this);
6078
6078
  hash2.sigBytes -= 16;
6079
6079
  return hash2;
6080
6080
  }
6081
6081
  });
6082
- C5.SHA384 = SHA5122._createHelper(SHA384);
6083
- C5.HmacSHA384 = SHA5122._createHmacHelper(SHA384);
6082
+ C5.SHA384 = SHA512._createHelper(SHA384);
6083
+ C5.HmacSHA384 = SHA512._createHmacHelper(SHA384);
6084
6084
  })();
6085
6085
  return CryptoJS2.SHA384;
6086
6086
  });
@@ -6897,7 +6897,7 @@ var MineRender = (() => {
6897
6897
  var Base = C_lib.Base;
6898
6898
  var WordArray = C_lib.WordArray;
6899
6899
  var C_algo = C5.algo;
6900
- var SHA2562 = C_algo.SHA256;
6900
+ var SHA256 = C_algo.SHA256;
6901
6901
  var HMAC = C_algo.HMAC;
6902
6902
  var PBKDF2 = C_algo.PBKDF2 = Base.extend({
6903
6903
  /**
@@ -6909,7 +6909,7 @@ var MineRender = (() => {
6909
6909
  */
6910
6910
  cfg: Base.extend({
6911
6911
  keySize: 128 / 32,
6912
- hasher: SHA2562,
6912
+ hasher: SHA256,
6913
6913
  iterations: 25e4
6914
6914
  }),
6915
6915
  /**
@@ -6998,7 +6998,7 @@ var MineRender = (() => {
6998
6998
  var Base = C_lib.Base;
6999
6999
  var WordArray = C_lib.WordArray;
7000
7000
  var C_algo = C5.algo;
7001
- var MD52 = C_algo.MD5;
7001
+ var MD5 = C_algo.MD5;
7002
7002
  var EvpKDF = C_algo.EvpKDF = Base.extend({
7003
7003
  /**
7004
7004
  * Configuration options.
@@ -7009,7 +7009,7 @@ var MineRender = (() => {
7009
7009
  */
7010
7010
  cfg: Base.extend({
7011
7011
  keySize: 128 / 32,
7012
- hasher: MD52,
7012
+ hasher: MD5,
7013
7013
  iterations: 1
7014
7014
  }),
7015
7015
  /**
@@ -16316,9 +16316,9 @@ var MineRender = (() => {
16316
16316
  Readable2.prototype.isPaused = function() {
16317
16317
  return this._readableState.flowing === false;
16318
16318
  };
16319
- Readable2.prototype.setEncoding = function(enc2) {
16319
+ Readable2.prototype.setEncoding = function(enc) {
16320
16320
  if (!StringDecoder) StringDecoder = e$12.StringDecoder;
16321
- var decoder = new StringDecoder(enc2);
16321
+ var decoder = new StringDecoder(enc);
16322
16322
  this._readableState.decoder = decoder;
16323
16323
  this._readableState.encoding = this._readableState.decoder.encoding;
16324
16324
  var p15 = this._readableState.buffer.head;
@@ -39612,11 +39612,11 @@ var MineRender = (() => {
39612
39612
  return false;
39613
39613
  }
39614
39614
  };
39615
- function _normalizeEncoding(enc2) {
39616
- if (!enc2) return "utf8";
39615
+ function _normalizeEncoding(enc) {
39616
+ if (!enc) return "utf8";
39617
39617
  var retried;
39618
39618
  while (true) {
39619
- switch (enc2) {
39619
+ switch (enc) {
39620
39620
  case "utf8":
39621
39621
  case "utf-8":
39622
39622
  return "utf8";
@@ -39631,18 +39631,18 @@ var MineRender = (() => {
39631
39631
  case "base64":
39632
39632
  case "ascii":
39633
39633
  case "hex":
39634
- return enc2;
39634
+ return enc;
39635
39635
  default:
39636
39636
  if (retried) return;
39637
- enc2 = ("" + enc2).toLowerCase();
39637
+ enc = ("" + enc).toLowerCase();
39638
39638
  retried = true;
39639
39639
  }
39640
39640
  }
39641
39641
  }
39642
- function normalizeEncoding(enc2) {
39643
- var nenc = _normalizeEncoding(enc2);
39644
- if (typeof nenc !== "string" && (Buffer2.isEncoding === isEncoding || !isEncoding(enc2))) throw new Error("Unknown encoding: " + enc2);
39645
- return nenc || enc2;
39642
+ function normalizeEncoding(enc) {
39643
+ var nenc = _normalizeEncoding(enc);
39644
+ if (typeof nenc !== "string" && (Buffer2.isEncoding === isEncoding || !isEncoding(enc))) throw new Error("Unknown encoding: " + enc);
39645
+ return nenc || enc;
39646
39646
  }
39647
39647
  exports13.StringDecoder = StringDecoder;
39648
39648
  function StringDecoder(encoding) {
@@ -40184,8 +40184,8 @@ var MineRender = (() => {
40184
40184
  const state = this._readableState;
40185
40185
  return state[kPaused] === true || state.flowing === false;
40186
40186
  };
40187
- Readable2.prototype.setEncoding = function(enc2) {
40188
- const decoder = new StringDecoder(enc2);
40187
+ Readable2.prototype.setEncoding = function(enc) {
40188
+ const decoder = new StringDecoder(enc);
40189
40189
  this._readableState.decoder = decoder;
40190
40190
  this._readableState.encoding = this._readableState.decoder.encoding;
40191
40191
  const buffer2 = this._readableState.buffer;
@@ -43372,7 +43372,7 @@ var MineRender = (() => {
43372
43372
  createPacketBuffer(packet) {
43373
43373
  return this.proto.createPacketBuffer(this.mainType, packet);
43374
43374
  }
43375
- _transform(chunk, enc2, cb) {
43375
+ _transform(chunk, enc, cb) {
43376
43376
  let buf;
43377
43377
  try {
43378
43378
  buf = this.createPacketBuffer(chunk);
@@ -43393,7 +43393,7 @@ var MineRender = (() => {
43393
43393
  parsePacketBuffer(buffer2) {
43394
43394
  return this.proto.parsePacketBuffer(this.mainType, buffer2);
43395
43395
  }
43396
- _transform(chunk, enc2, cb) {
43396
+ _transform(chunk, enc, cb) {
43397
43397
  this.queue = Buffer.concat([this.queue, chunk]);
43398
43398
  while (true) {
43399
43399
  let packet;
@@ -43423,7 +43423,7 @@ var MineRender = (() => {
43423
43423
  parsePacketBuffer(buffer2) {
43424
43424
  return this.proto.parsePacketBuffer(this.mainType, buffer2);
43425
43425
  }
43426
- _transform(chunk, enc2, cb) {
43426
+ _transform(chunk, enc, cb) {
43427
43427
  let packet;
43428
43428
  try {
43429
43429
  packet = this.parsePacketBuffer(chunk);
@@ -68079,19 +68079,19 @@ return ${compiler2.callType("value", tagType)}
68079
68079
  init_dirname();
68080
68080
  init_buffer2();
68081
68081
  init_process2();
68082
- var CryptoJS = __toESM(require_crypto_js());
68082
+ var import_crypto_js = __toESM(require_crypto_js());
68083
68083
  var changeEvent = { type: "change" };
68084
68084
  function md5(str) {
68085
- return CryptoJS.MD5(str).toString(CryptoJS.enc.Hex);
68085
+ return import_crypto_js.default.MD5(str).toString(import_crypto_js.default.enc.Hex);
68086
68086
  }
68087
68087
  function sha1(str) {
68088
- return CryptoJS.SHA1(str).toString(CryptoJS.enc.Hex);
68088
+ return import_crypto_js.default.SHA1(str).toString(import_crypto_js.default.enc.Hex);
68089
68089
  }
68090
68090
  function sha256(str) {
68091
- return CryptoJS.SHA256(str).toString(CryptoJS.enc.Hex);
68091
+ return import_crypto_js.default.SHA256(str).toString(import_crypto_js.default.enc.Hex);
68092
68092
  }
68093
68093
  function sha512(str) {
68094
- return CryptoJS.SHA512(str).toString(CryptoJS.enc.Hex);
68094
+ return import_crypto_js.default.SHA512(str).toString(import_crypto_js.default.enc.Hex);
68095
68095
  }
68096
68096
  function base64encode(str) {
68097
68097
  if (typeof btoa !== "undefined") {
@@ -81078,26 +81078,40 @@ ${key}` : key;
81078
81078
  };
81079
81079
  return collect("");
81080
81080
  }
81081
- static async getEntity(modelKey, textureKey, options) {
81081
+ static async getModelFile(modelKey) {
81082
81082
  const path = isAssetKey(modelKey) ? modelKey.getFullPath() : modelKey.path;
81083
81083
  const key = new AssetKey(modelKey.namespace, path, void 0, void 0, "entity-models", ".json");
81084
- const model = await Caching.entityModelCache.get(key.serialize(), () => AssetLoader.get(key, "json" /* JSON */));
81084
+ return Caching.entityModelCache.get(key.serialize(), () => AssetLoader.get(key, "json" /* JSON */));
81085
+ }
81086
+ static async getLayerList(modelKey) {
81087
+ return Object.keys((await this.getModelFile(modelKey))?.layers ?? {});
81088
+ }
81089
+ static async getEntity(modelKey, textureKey, options) {
81090
+ const model = await this.getModelFile(modelKey);
81085
81091
  if (!model) return void 0;
81086
- const layerName = options?.layer ?? "main";
81087
- const layer = model.layers[layerName];
81088
- if (!layer) {
81089
- throw new MineRenderError(`Entity ${model.id} has no layer "${layerName}". Available layers: ${Object.keys(model.layers).join(", ")}`);
81090
- }
81091
- let texture;
81092
- if (textureKey) {
81093
- const path2 = isAssetKey(textureKey) ? textureKey.getFullPath() : textureKey.path;
81094
- texture = isAssetKey(textureKey) && textureKey.assetType === "textures" && path2.startsWith("entity/") ? textureKey : new AssetKey(textureKey.namespace, path2, "textures", "entity", "assets", ".png", isAssetKey(textureKey) ? textureKey.root : void 0);
81095
- } else if (layer.textureLocation !== void 0) {
81096
- texture = AssetKey.parse("textures", layer.textureLocation.replace(/^([^:]+:)?textures\//, "$1"));
81097
- } else {
81098
- texture = await this.resolveTexture(modelKey);
81099
- }
81100
- return { key: textureKey ?? modelKey, texture, layer, id: model.id };
81092
+ const names = [...new Set(options?.layers ?? [options?.layer ?? "main"])];
81093
+ if (names.length === 0) throw new MineRenderError(`Entity ${model.id} requires at least one layer`);
81094
+ const selected = names.map((name2) => {
81095
+ const layer = model.layers[name2];
81096
+ if (!layer) {
81097
+ throw new MineRenderError(`Entity ${model.id} has no layer "${name2}". Available layers: ${Object.keys(model.layers).join(", ")}`);
81098
+ }
81099
+ return { name: name2, layer };
81100
+ });
81101
+ const layers = Object.fromEntries(await Promise.all(selected.map(async ({ name: name2, layer }, index) => {
81102
+ const override = options?.textures?.[name2] ?? (index === 0 ? textureKey : void 0);
81103
+ let texture;
81104
+ if (override) {
81105
+ const path = isAssetKey(override) ? override.getFullPath() : override.path;
81106
+ texture = isAssetKey(override) && override.assetType === "textures" && path.startsWith("entity/") ? override : new AssetKey(override.namespace, path, "textures", "entity", "assets", ".png", isAssetKey(override) ? override.root : void 0);
81107
+ } else if (layer.textureLocation !== void 0) {
81108
+ texture = AssetKey.parse("textures", layer.textureLocation.replace(/^([^:]+:)?textures\//, "$1"));
81109
+ } else {
81110
+ texture = await this.resolveTexture(modelKey);
81111
+ }
81112
+ return [name2, { key: override ?? modelKey, texture, layer }];
81113
+ })));
81114
+ return { ...layers[names[0]], id: model.id, layers };
81101
81115
  }
81102
81116
  static async resolveTexture(modelKey) {
81103
81117
  const path = isAssetKey(modelKey) ? modelKey.getFullPath() : modelKey.path;
@@ -81621,9 +81635,21 @@ ${key}` : key;
81621
81635
  dispose() {
81622
81636
  super.dispose();
81623
81637
  }
81624
- get textureKey() {
81625
- if (this.entity.texture) return this.entity.texture;
81626
- const key = this.entity.key;
81638
+ getLayerGroup(name2) {
81639
+ return super.getGroupByName(`layer:${name2}`);
81640
+ }
81641
+ getGroupByName(name2, layerName) {
81642
+ return layerName === void 0 ? super.getGroupByName(name2) : this.getLayerGroup(layerName)?.getObjectByName(`group:${name2}`);
81643
+ }
81644
+ getMeshByName(name2, layerName) {
81645
+ return layerName === void 0 ? super.getMeshByName(name2) : this.getLayerGroup(layerName)?.getObjectByName(`mesh:${name2}`);
81646
+ }
81647
+ get entityLayers() {
81648
+ return this.entity.layers ?? { main: this.entity };
81649
+ }
81650
+ getTextureKey(layer) {
81651
+ if (layer.texture) return layer.texture;
81652
+ const key = layer.key;
81627
81653
  return new AssetKey(
81628
81654
  key.namespace,
81629
81655
  isAssetKey(key) ? key.getFullPath() : key.path,
@@ -81633,18 +81659,22 @@ ${key}` : key;
81633
81659
  ".png"
81634
81660
  );
81635
81661
  }
81636
- async loadTextures() {
81637
- this.imageData = await ModelTextures.get(this.textureKey);
81662
+ async loadTextures(layer = this.entity) {
81663
+ return ModelTextures.get(this.getTextureKey(layer));
81638
81664
  }
81639
81665
  createMeshes(force = false) {
81640
81666
  if (this.meshesCreated && !force) return;
81641
81667
  const modelRoot = new Object3D();
81642
81668
  if (this.options.flip) modelRoot.scale.set(-1, -1, 1);
81643
81669
  this.add(modelRoot);
81644
- this.createPart("root", this.entity.layer.root, modelRoot, this.entity.layer.texture, Materials.MISSING_TEXTURE);
81670
+ Object.entries(this.entityLayers).forEach(([name2, layer], index) => {
81671
+ const group = this.createGroup(`layer:${name2}`);
81672
+ modelRoot.add(group);
81673
+ this.createPart("root", layer.layer.root, group, layer.layer.texture, Materials.MISSING_TEXTURE, index);
81674
+ });
81645
81675
  this.meshesCreated = true;
81646
81676
  }
81647
- createPart(name2, part, parent, textureSize, material) {
81677
+ createPart(name2, part, parent, textureSize, material, renderOrder) {
81648
81678
  const anchor = this.createGroup(name2);
81649
81679
  anchor.position.fromArray(part.pose.offset);
81650
81680
  anchor.rotation.set(...part.pose.rotation, "ZYX");
@@ -81664,30 +81694,31 @@ ${key}` : key;
81664
81694
  ).clone();
81665
81695
  geometry.translate(cube.origin[0] + width / 2, cube.origin[1] + height / 2, cube.origin[2] + depth / 2);
81666
81696
  const mesh = this.createMesh(name2, geometry, material);
81697
+ mesh.renderOrder = renderOrder;
81667
81698
  anchor.add(mesh);
81668
81699
  if (this.options.wireframe) addWireframeToMesh(geometry, mesh);
81669
81700
  }
81670
81701
  for (const [childName, child] of Object.entries(part.children)) {
81671
- this.createPart(childName, child, anchor, size, material);
81702
+ this.createPart(childName, child, anchor, size, material, renderOrder);
81672
81703
  }
81673
81704
  }
81674
81705
  async applyTextures() {
81675
- const assetKeyStr = this.textureKey.serialize();
81676
- const keyStr = `entity:${assetKeyStr}`;
81677
- let mat = Caching.materialCache.getIfPresent(keyStr);
81678
- if (!mat) {
81679
- const pending = this.loadTextures();
81680
- const cachedAsset = Caching.textureAssetCache.getIfPresent(assetKeyStr);
81681
- await pending;
81682
- if (!this.imageData) return;
81683
- const canvas = this.imageData.data.canvas;
81684
- const createMaterial = () => Materials.createBasicCanvasMaterial(canvas);
81685
- mat = cachedAsset && Caching.textureAssetCache.getIfPresent(assetKeyStr) === cachedAsset ? Caching.materialCache.get(keyStr, createMaterial) : createMaterial();
81686
- this.imageData = void 0;
81687
- }
81688
- this.iterateAllMeshes((mesh) => {
81689
- mesh.material = mat;
81690
- });
81706
+ await Promise.all(Object.entries(this.entityLayers).map(async ([name2, layer]) => {
81707
+ const assetKeyStr = this.getTextureKey(layer).serialize();
81708
+ const keyStr = `entity:${assetKeyStr}`;
81709
+ let mat = Caching.materialCache.getIfPresent(keyStr);
81710
+ if (!mat) {
81711
+ const cachedAsset = Caching.textureAssetCache.getIfPresent(assetKeyStr);
81712
+ const imageData = await this.loadTextures(layer);
81713
+ if (!imageData) return;
81714
+ const canvas = imageData.data.canvas;
81715
+ const createMaterial = () => Materials.createBasicCanvasMaterial(canvas);
81716
+ mat = cachedAsset && Caching.textureAssetCache.getIfPresent(assetKeyStr) === cachedAsset ? Caching.materialCache.get(keyStr, createMaterial) : createMaterial();
81717
+ }
81718
+ this.getLayerGroup(name2)?.traverse((object) => {
81719
+ if (isMesh(object)) object.material = mat;
81720
+ });
81721
+ }));
81691
81722
  this.notifyDirty();
81692
81723
  }
81693
81724
  };