@nodecraft/rendermite 1.8.0 → 1.9.0

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 (146) hide show
  1. package/README.md +8 -1
  2. package/dist/atlas/registry.d.ts +3 -3
  3. package/dist/atlas/sources.d.ts +1 -1
  4. package/dist/{atlas-pack-C56gzqAg.d.ts → atlas-pack-BUadroKy.d.ts} +1 -1
  5. package/dist/biomes-BGOF6gRM.js +1100 -0
  6. package/dist/biomes-CnnhDCnk.d.ts +59 -0
  7. package/dist/{blend-C5UYzink.d.ts → blend-mJAeQB3C.d.ts} +1 -1
  8. package/dist/{pack-format-BqWf-DNc.d.ts → block-behaviour-9Tj_GIUC.d.ts} +287 -5
  9. package/dist/block-behaviour-D-SG2Xfp.js +155 -0
  10. package/dist/blocks/atlas-pack.d.ts +1 -1
  11. package/dist/blocks/biomes.d.ts +2 -2
  12. package/dist/blocks/biomes.js +2 -2
  13. package/dist/blocks/block-behaviour.d.ts +2 -0
  14. package/dist/blocks/block-behaviour.js +2 -0
  15. package/dist/blocks/block-entities.d.ts +3 -3
  16. package/dist/blocks/cli.js +1 -1
  17. package/dist/blocks/datapack.d.ts +2 -0
  18. package/dist/blocks/datapack.js +2 -0
  19. package/dist/blocks/ender-storage.d.ts +2 -2
  20. package/dist/blocks/entities.d.ts +3 -3
  21. package/dist/blocks/entity-geo.d.ts +1 -1
  22. package/dist/blocks/entity-models.d.ts +3 -3
  23. package/dist/blocks/entity-models.js +1 -1
  24. package/dist/blocks/entity-sizes.d.ts +25 -0
  25. package/dist/blocks/entity-sizes.js +2 -0
  26. package/dist/blocks/export.d.ts +1 -1
  27. package/dist/blocks/export.js +1 -1
  28. package/dist/blocks/game-rules.d.ts +2 -0
  29. package/dist/blocks/game-rules.js +2 -0
  30. package/dist/blocks/geo-blocks.d.ts +2 -2
  31. package/dist/blocks/item-sprites.d.ts +4 -4
  32. package/dist/blocks/light-bytecode.d.ts +2 -174
  33. package/dist/blocks/light-bytecode.js +1 -1
  34. package/dist/blocks/light-eval.d.ts +1 -1
  35. package/dist/blocks/light.d.ts +11 -1
  36. package/dist/blocks/light.js +1 -1
  37. package/dist/blocks/obj-mesh.d.ts +1 -1
  38. package/dist/blocks/pack-format.d.ts +2 -2
  39. package/dist/blocks/sprite-sheet.d.ts +3 -3
  40. package/dist/blocks/states.d.ts +2 -0
  41. package/dist/blocks/states.js +2 -0
  42. package/dist/blocks/tints.d.ts +1 -1
  43. package/dist/{cli-Dw1Q5CPR.js → cli-xBcMuKA3.js} +10 -5
  44. package/dist/cli.js +7 -7
  45. package/dist/datapack-CmEg0Vko.d.ts +15 -0
  46. package/dist/datapack-D6eH46ay.js +71 -0
  47. package/dist/{descriptor-CmkIkDKL.js → descriptor-Dz2cR-BH.js} +2 -2
  48. package/dist/{discovery-Cmir3QfC.d.ts → discovery-DWe_kX8W.d.ts} +1 -1
  49. package/dist/dynamic/generators.d.ts +1 -1
  50. package/dist/{encode-Br_vPrd8.d.ts → encode-BNEYHHR0.d.ts} +1 -1
  51. package/dist/entities/geo-model.d.ts +1 -1
  52. package/dist/entities/inherit.d.ts +1 -1
  53. package/dist/entities/jar-classes.js +1 -1
  54. package/dist/entities/link.d.ts +1 -1
  55. package/dist/entities/mappings.d.ts +1 -1
  56. package/dist/entities/mappings.js +1 -1
  57. package/dist/entities/model-bytecode.d.ts +1 -1
  58. package/dist/{entity-models-BGiy3pey.js → entity-models-BYAxrTsk.js} +1 -1
  59. package/dist/entity-sizes-CpO1gA7p.js +194 -0
  60. package/dist/{export-t8X_oRws.js → export-CbG2Rx3i.js} +54 -5
  61. package/dist/{export-J13L9Lqu.d.ts → export-HEoqcV-Y.d.ts} +17 -2
  62. package/dist/{face-DqEd9G_U.d.ts → face-uWXECGNr.d.ts} +2 -2
  63. package/dist/game-rules-DuLlFc7o.js +104 -0
  64. package/dist/game-rules-ThvdDG3B.d.ts +16 -0
  65. package/dist/{generators-BnIzAftW.d.ts → generators-hu_vk10m.d.ts} +1 -1
  66. package/dist/{geo-C9QYeLVN.d.ts → geo-DsWwuC5o.d.ts} +4 -4
  67. package/dist/index.d.ts +20 -20
  68. package/dist/index.js +8 -8
  69. package/dist/items/blockstate.d.ts +1 -1
  70. package/dist/items/discovery.d.ts +1 -1
  71. package/dist/{jar-B5iRZQeL.d.ts → jar-4Jg7ufWK.d.ts} +1 -1
  72. package/dist/{jar-CBYPMbw7.js → jar-DvofBm71.js} +2 -2
  73. package/dist/{jar-classes-CSm7qq1R.js → jar-classes-0wqWbTax.js} +2 -2
  74. package/dist/{light-CyRhYulM.js → light-CC3VMsjl.js} +37 -5
  75. package/dist/{light-bytecode-Cpyuxo9b.js → light-bytecode-DYxb6pJk.js} +80 -30
  76. package/dist/{light-eval-D9x0ufZx.d.ts → light-eval-DMjK6xnb.d.ts} +1 -1
  77. package/dist/{loader-DSir1-P0.d.ts → loader-BYyPIs9f.d.ts} +1 -1
  78. package/dist/{loader-59_eMa8e.d.ts → loader-C4gsX_wO.d.ts} +1 -1
  79. package/dist/{manager-exOIcdyx.d.ts → manager-Ct0dEOMg.d.ts} +6 -0
  80. package/dist/{manager-BNibYkmI.js → manager-D6zXmFrO.js} +6 -0
  81. package/dist/{mappings-Ep6ko0rg.js → mappings-DEl_7xxQ.js} +18 -1
  82. package/dist/{mappings-USwcjtcH.d.ts → mappings-DhOPQTgV.d.ts} +5 -0
  83. package/dist/models/loader.d.ts +1 -1
  84. package/dist/{models-CZjCOjs4.js → models-BsYA-NZg.js} +1 -1
  85. package/dist/mods/models.d.ts +1 -1
  86. package/dist/mods/models.js +1 -1
  87. package/dist/mods/prepare.d.ts +1 -1
  88. package/dist/mods/prepare.js +1 -1
  89. package/dist/mods/synthesize.d.ts +2 -2
  90. package/dist/mods/tints.d.ts +2 -2
  91. package/dist/mods/tints.js +1 -1
  92. package/dist/{obj-mesh-ydhVfLKs.d.ts → obj-mesh-CzL0lOlJ.d.ts} +2 -2
  93. package/dist/output/encode.d.ts +1 -1
  94. package/dist/pack.d.ts +7 -6
  95. package/dist/{pipeline-DFuQa8ZT.d.ts → pipeline-DuPF3sap.d.ts} +3 -3
  96. package/dist/{pipeline-CRTQGba7.js → pipeline-Q_185kY6.js} +1 -1
  97. package/dist/{prepare-OS7wL3jv.d.ts → prepare-BPzsZI_S.d.ts} +1 -1
  98. package/dist/{prepare-6pH3CNpg.d.ts → prepare-Ce5SpR7Y.d.ts} +1 -1
  99. package/dist/{prepare-C61BcwFA.js → prepare-DkJkZXuQ.js} +2 -2
  100. package/dist/{prepare-DxPEu9mo.js → prepare-sj36BP90.js} +4 -4
  101. package/dist/{rasterizer-C2wgJZ6J.d.ts → rasterizer-DjnurUgD.d.ts} +1 -1
  102. package/dist/render/blend.d.ts +1 -1
  103. package/dist/render/compose.d.ts +2 -2
  104. package/dist/render/entity-fallback.d.ts +6 -6
  105. package/dist/render/face.d.ts +1 -1
  106. package/dist/render/fluid-bucket.d.ts +2 -2
  107. package/dist/render/geo.d.ts +1 -1
  108. package/dist/render/legacy-tints.d.ts +2 -2
  109. package/dist/render/obj.d.ts +5 -5
  110. package/dist/render/pipeline.d.ts +1 -1
  111. package/dist/render/pipeline.js +1 -1
  112. package/dist/render/rasterizer.d.ts +1 -1
  113. package/dist/render/renderer.d.ts +1 -1
  114. package/dist/render/tints.d.ts +1 -1
  115. package/dist/{renderer-DbUmTFDb.d.ts → renderer-QgROYvPv.d.ts} +5 -5
  116. package/dist/resources/descriptor.d.ts +1 -1
  117. package/dist/resources/descriptor.js +1 -1
  118. package/dist/resources/entity-textures.d.ts +2 -2
  119. package/dist/resources/jar.d.ts +1 -1
  120. package/dist/resources/jar.js +1 -1
  121. package/dist/resources/manager.d.ts +1 -1
  122. package/dist/resources/manager.js +1 -1
  123. package/dist/resources/synthetic.d.ts +1 -1
  124. package/dist/resources/zip-reader.js +1 -1
  125. package/dist/{run-DYcem_Vv.js → run-5yX5KRiI.js} +4 -4
  126. package/dist/{run-CLjF0N2d.d.ts → run-CxB1qabg.d.ts} +2 -2
  127. package/dist/run.d.ts +1 -1
  128. package/dist/run.js +1 -1
  129. package/dist/{sources-e5D09Jz_.d.ts → sources-sFtealLJ.d.ts} +1 -1
  130. package/dist/states-BvoZA-ql.js +40 -0
  131. package/dist/states-OzneeCTU.d.ts +25 -0
  132. package/dist/{synthetic-B3R7mW9k.d.ts → synthetic-CWtFtAkR.d.ts} +1 -1
  133. package/dist/textures/loader.d.ts +1 -1
  134. package/dist/textures/overlay.d.ts +1 -1
  135. package/dist/{tints-uLl1CIkC.d.ts → tints-B0a1K11c.d.ts} +2 -2
  136. package/dist/{tints-CWQz6UkM.js → tints-CZeyKzMv.js} +2 -2
  137. package/dist/{tints-CQX8a1F0.d.ts → tints-DwFmEkf3.d.ts} +2 -2
  138. package/dist/versions/legacy-reshape.d.ts +1 -1
  139. package/dist/versions/prepare.d.ts +1 -1
  140. package/dist/versions/prepare.js +1 -1
  141. package/dist/workers/render-worker.d.ts +2 -2
  142. package/dist/workers/render-worker.js +2 -2
  143. package/dist/{zip-reader-zx3kdSq4.js → zip-reader-onwEVMea.js} +4 -4
  144. package/package.json +1 -1
  145. package/dist/biomes-5ZwYxMYe.js +0 -384
  146. package/dist/biomes-CJDJQqJb.d.ts +0 -38
@@ -1,7 +1,8 @@
1
+ import { r as compareVersions } from "./prepare-DkJkZXuQ.js";
1
2
  import { t as parseClassFile } from "./classfile-CiIDF3vc.js";
2
- import { c as resolveMappings, s as remapDescriptor, t as MappingsUnavailableError } from "./mappings-Ep6ko0rg.js";
3
- import { t as extractBlockLight } from "./light-bytecode-Cpyuxo9b.js";
4
- import { r as compareVersions } from "./prepare-C61BcwFA.js";
3
+ import { c as resolveMappings, s as remapDescriptor, t as MappingsUnavailableError } from "./mappings-DEl_7xxQ.js";
4
+ import { t as blockBehaviour } from "./block-behaviour-D-SG2Xfp.js";
5
+ import { t as extractBlockLight } from "./light-bytecode-DYxb6pJk.js";
5
6
  //#region src/blocks/light.ts
6
7
  /**
7
8
  * Block light emission for the exported pack: `light.json`.
@@ -188,7 +189,7 @@ function findLightGetters(roots, propsClasses, resolve, notes) {
188
189
  return getters;
189
190
  }
190
191
  /** Reference renaming through the mappings: a mod's original names onto an obfuscated client's. */
191
- function remapper(mappings) {
192
+ function remapper(mappings, superOf = () => null) {
192
193
  const remapClass = (internalName) => {
193
194
  const mapped = mappings.obfuscatedOf.get(internalName.replaceAll("/", "."));
194
195
  return mapped ? mapped.replaceAll(".", "/") : internalName;
@@ -204,9 +205,20 @@ function remapper(mappings) {
204
205
  descriptor: remapDescriptor(reference.descriptor, mappings.obfuscatedOf)
205
206
  };
206
207
  };
208
+ const nameOf = (reference, field) => {
209
+ let owner = reference.owner;
210
+ for (let hops = 0; owner && hops < 8; hops++) {
211
+ const dotted = owner.replaceAll("/", ".");
212
+ const found = mappings.nameOf?.get(field ? `${dotted}.${reference.name}` : `${dotted}.${reference.name}${reference.descriptor}`);
213
+ if (found) return found;
214
+ owner = superOf(owner);
215
+ }
216
+ return reference.name;
217
+ };
207
218
  return {
208
219
  remap,
209
- remapClass
220
+ remapClass,
221
+ nameOf
210
222
  };
211
223
  }
212
224
  async function collectBlockLight(options) {
@@ -228,6 +240,7 @@ async function collectBlockLight(options) {
228
240
  notes.push(err.message);
229
241
  }
230
242
  const { remap, remapClass } = remapper(mappings);
243
+ const isClearJar = names.some((name) => name.replaceAll(".", "/") === "net/minecraft/world/level/block/Blocks");
231
244
  const bytes = /* @__PURE__ */ new Map();
232
245
  for (const name of names) {
233
246
  const read = await classes.read(name);
@@ -248,6 +261,7 @@ async function collectBlockLight(options) {
248
261
  }
249
262
  return parsed.get(internal) ?? null;
250
263
  };
264
+ const { nameOf } = remapper(mappings, (name) => resolve(name)?.superClass ?? null);
251
265
  const wanted = /* @__PURE__ */ new Set();
252
266
  for (const id of blockIds) {
253
267
  wanted.add(id);
@@ -275,7 +289,9 @@ async function collectBlockLight(options) {
275
289
  });
276
290
  return {
277
291
  light: {},
292
+ behaviour: {},
278
293
  failures,
294
+ behaviourFailures: [],
279
295
  notes
280
296
  };
281
297
  }
@@ -284,6 +300,7 @@ async function collectBlockLight(options) {
284
300
  resolve,
285
301
  remap,
286
302
  remapClass,
303
+ nameOf,
287
304
  propsClasses,
288
305
  lightGetters: findLightGetters(roots, propsClasses, resolve, notes),
289
306
  isVanillaClass: (name) => mappings.originalOf.size === 0 || mappings.originalOf.has(name.replaceAll("/", ".")) || name.startsWith("net/minecraft/") || name.startsWith("com/mojang/")
@@ -315,9 +332,24 @@ async function collectBlockLight(options) {
315
332
  }
316
333
  }
317
334
  }
335
+ const behaviour = {};
336
+ const behaviourFailures = [];
337
+ if (mappings.originalOf.size > 0 || isClearJar) for (const id of blockIds) {
338
+ const registration = NOT_BLOCKS.has(id) ? null : extraction.registrationOf(id);
339
+ const read = registration ? blockBehaviour(registration, extraction) : null;
340
+ if (read) {
341
+ behaviour[id] = read.behaviour;
342
+ for (const reason of read.failures) behaviourFailures.push({
343
+ id,
344
+ reason
345
+ });
346
+ }
347
+ }
318
348
  return {
319
349
  light,
350
+ behaviour,
320
351
  failures,
352
+ behaviourFailures,
321
353
  notes
322
354
  };
323
355
  }
@@ -1,4 +1,5 @@
1
1
  import { r as parseDescriptor } from "./model-bytecode-VaLUQfGO.js";
2
+ import { n as statedMapColor } from "./block-behaviour-D-SG2Xfp.js";
2
3
  //#region src/blocks/light-bytecode.ts
3
4
  /**
4
5
  * Block light emission, read out of the code that registers blocks.
@@ -294,6 +295,7 @@ var Interpreter = class Interpreter {
294
295
  if (sources.length > 0) {
295
296
  const from = sources[0].handle;
296
297
  created.light = from.isProps ? from.light : from.props?.light ?? null;
298
+ created.copyOf = from.isProps ? from : from.props;
297
299
  } else if (inputs.some((value) => value.kind === "unknown" || value.kind === "null")) created.light = {
298
300
  kind: "opaque",
299
301
  reason: "properties copied from a block the interpreter could not identify"
@@ -848,6 +850,14 @@ var Interpreter = class Interpreter {
848
850
  }
849
851
  if (receiver?.kind === "object") {
850
852
  const target = receiver.handle;
853
+ const named = source.nameOf?.(reference, false) ?? remapped.name;
854
+ if (target.props && args.length === 0 && (named === "defaultMapColor" || named === "defaultMaterialColor")) {
855
+ const colour = statedMapColor(target.props);
856
+ if (colour && colour.kind !== "lambda") {
857
+ this.push(colour);
858
+ return;
859
+ }
860
+ }
851
861
  const getter = source.lightGetters.find((candidate) => matchesGetter(candidate, remapped.name, remapped.descriptor));
852
862
  if (getter && target.props && args[0]?.kind === "state") {
853
863
  const found = findGetter(source, target.type ?? remapped.owner, getter);
@@ -892,6 +902,12 @@ var Interpreter = class Interpreter {
892
902
  return;
893
903
  }
894
904
  if (returns.startsWith("L") && this.isPropsType(returns.slice(1, -1))) {
905
+ const name = source.nameOf?.(reference, false) ?? remapped.name;
906
+ (target.calls ??= []).push({
907
+ name: name === reference.name ? remapped.name : name,
908
+ descriptor: remapped.descriptor,
909
+ args
910
+ });
895
911
  this.push(receiver);
896
912
  return;
897
913
  }
@@ -1407,6 +1423,8 @@ var Interpreter = class Interpreter {
1407
1423
  const reference = constants.reference(index);
1408
1424
  if (target.kind === "object" && reference) {
1409
1425
  target.handle.fields.set(reference.name, value);
1426
+ const mapped = this.shared.source.nameOf?.(reference, true) ?? reference.name;
1427
+ if (mapped !== reference.name) target.handle.fields.set(`mapped:${mapped}`, value);
1410
1428
  if (value.kind === "object" && value.handle.isProps) target.handle.props = value.handle;
1411
1429
  }
1412
1430
  break;
@@ -1547,6 +1565,21 @@ var Interpreter = class Interpreter {
1547
1565
  this.note(`${classFile.thisClass}: ${err.message}`);
1548
1566
  }
1549
1567
  }
1568
+ /** Runs a function of a block state against one state; null where the interpreter lost the value. */
1569
+ evaluateLambda(fn, probe) {
1570
+ this.shared.probe = probe;
1571
+ this.shared.steps = STEP_BUDGET;
1572
+ this.shared.frames = FRAME_BUDGET;
1573
+ try {
1574
+ const result = this.invokeLambda(fn, [{
1575
+ kind: "state",
1576
+ probe
1577
+ }]);
1578
+ return probe.failure ? null : result;
1579
+ } finally {
1580
+ this.shared.probe = null;
1581
+ }
1582
+ }
1550
1583
  /** Evaluates a light spec against one state; null where the interpreter lost the value. */
1551
1584
  evaluate(spec, probe) {
1552
1585
  this.shared.probe = probe;
@@ -1700,37 +1733,16 @@ function extractBlockLight(roots, source) {
1700
1733
  }
1701
1734
  if (spec.kind === "constant") return { light: Math.max(0, Math.min(15, Math.round(spec.level))) };
1702
1735
  if (spec.kind === "opaque") return { failure: `light could not be read: ${spec.reason}` };
1703
- const domains = /* @__PURE__ */ new Map();
1704
- let properties = [];
1705
1736
  const evaluator = new Interpreter(shared);
1706
- for (let rounds = 0; rounds < 8; rounds++) {
1707
- const table = [];
1708
- const discovered = /* @__PURE__ */ new Set();
1709
- const assignments = combinations(properties.map((name) => domains.get(name)));
1710
- if (assignments.length > MAX_STATES) return { failure: `light function depends on ${assignments.length} states; too many to be a real block` };
1711
- for (const values of assignments) {
1712
- const probe = {
1713
- values,
1714
- domains,
1715
- reads: /* @__PURE__ */ new Set(),
1716
- failure: null
1717
- };
1718
- const before = shared.notes.length;
1719
- const level = evaluator.evaluate(spec, probe);
1720
- if (level === null) {
1721
- const detail = shared.notes.slice(before).join("; ");
1722
- return { failure: `light function ${probe.failure ?? "did not return a number"}${detail ? ` (${detail})` : ""}` };
1723
- }
1724
- table.push({
1725
- values,
1726
- level
1727
- });
1728
- for (const read of probe.reads) if (!properties.includes(read)) discovered.add(read);
1729
- }
1730
- if (discovered.size === 0) return { light: foldCases(table, properties) };
1731
- properties = [...properties, ...discovered];
1732
- }
1733
- return { failure: "light function reads more properties than a blockstate can have" };
1737
+ const folded = tabulateStates(shared, (probe) => evaluator.evaluate(spec, probe), "light function");
1738
+ return "failure" in folded ? folded : { light: folded.value };
1739
+ };
1740
+ const tabulate = (fn, read) => {
1741
+ const evaluator = new Interpreter(shared);
1742
+ return tabulateStates(shared, (probe) => {
1743
+ const value = evaluator.evaluateLambda(fn, probe);
1744
+ return value === null ? null : read(value);
1745
+ }, "state function");
1734
1746
  };
1735
1747
  const describe = (blockId) => {
1736
1748
  const registration = registrationOf(blockId);
@@ -1742,8 +1754,46 @@ function extractBlockLight(roots, source) {
1742
1754
  registrations: shared.registrations,
1743
1755
  notes: shared.notes,
1744
1756
  lightOf,
1757
+ registrationOf,
1758
+ tabulate,
1745
1759
  describe
1746
1760
  };
1747
1761
  }
1762
+ /**
1763
+ * Runs `evaluate` over every combination of the properties it turns out to read, discovering them as
1764
+ * it goes: the first round runs with none, and each round adds whatever the last one read.
1765
+ */
1766
+ function tabulateStates(shared, evaluate, what) {
1767
+ const domains = /* @__PURE__ */ new Map();
1768
+ let properties = [];
1769
+ for (let rounds = 0; rounds < 8; rounds++) {
1770
+ const table = [];
1771
+ const discovered = /* @__PURE__ */ new Set();
1772
+ const assignments = combinations(properties.map((name) => domains.get(name)));
1773
+ if (assignments.length > MAX_STATES) return { failure: `${what} depends on ${assignments.length} states; too many to be a real block` };
1774
+ for (const values of assignments) {
1775
+ const probe = {
1776
+ values,
1777
+ domains,
1778
+ reads: /* @__PURE__ */ new Set(),
1779
+ failure: null
1780
+ };
1781
+ const before = shared.notes.length;
1782
+ const level = evaluate(probe);
1783
+ if (level === null) {
1784
+ const detail = shared.notes.slice(before).join("; ");
1785
+ return { failure: `${what} ${probe.failure ?? "did not return a number"}${detail ? ` (${detail})` : ""}` };
1786
+ }
1787
+ table.push({
1788
+ values,
1789
+ level
1790
+ });
1791
+ for (const read of probe.reads) if (!properties.includes(read)) discovered.add(read);
1792
+ }
1793
+ if (discovered.size === 0) return { value: foldCases(table, properties) };
1794
+ properties = [...properties, ...discovered];
1795
+ }
1796
+ return { failure: `${what} reads more properties than a blockstate can have` };
1797
+ }
1748
1798
  //#endregion
1749
1799
  export { extractBlockLight as t };
@@ -1,5 +1,5 @@
1
1
  import { n as BlockProperties } from "./blockstate-eval-BzznRcVY.js";
2
- import { d as BlockPackLight } from "./pack-format-BqWf-DNc.js";
2
+ import { j as BlockPackLight } from "./block-behaviour-9Tj_GIUC.js";
3
3
  //#region src/blocks/light-eval.d.ts
4
4
  /**
5
5
  * The light a block emits in the given state, 0–15.
@@ -1,5 +1,5 @@
1
1
  import { n as ResourceLocator } from "./locator-jDbdUeTd.js";
2
- import { a as ResourceManager } from "./manager-exOIcdyx.js";
2
+ import { a as ResourceManager } from "./manager-Ct0dEOMg.js";
3
3
  import { c as ModelJson, n as DisplayTransformJson, o as ModelElementJson, t as DisplayPosition } from "./types-qlp3I8_-.js";
4
4
  //#region src/models/loader.d.ts
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import { n as ResourceLocator } from "./locator-jDbdUeTd.js";
2
- import { a as ResourceManager } from "./manager-exOIcdyx.js";
2
+ import { a as ResourceManager } from "./manager-Ct0dEOMg.js";
3
3
  //#region src/textures/loader.d.ts
4
4
  /** Structural interface for atlas resolvers (avoids a circular module edge). */
5
5
  interface AtlasResolverLike {
@@ -81,6 +81,12 @@ declare const ResourceKind: {
81
81
  readonly directory: "worldgen/biome";
82
82
  readonly extension: ".json";
83
83
  };
84
+ /** Any datapack JSON under data/<ns>/: tags, advancements, whatever the version ships as data. */
85
+ readonly data: {
86
+ readonly root: "data";
87
+ readonly directory: "";
88
+ readonly extension: ".json";
89
+ };
84
90
  };
85
91
  type ResourceKindName = keyof typeof ResourceKind;
86
92
  interface ResourceManager {
@@ -58,6 +58,12 @@ const ResourceKind = {
58
58
  root: "data",
59
59
  directory: "worldgen/biome",
60
60
  extension: ".json"
61
+ },
62
+ /** Any datapack JSON under data/<ns>/: tags, advancements, whatever the version ships as data. */
63
+ data: {
64
+ root: "data",
65
+ directory: "",
66
+ extension: ".json"
61
67
  }
62
68
  };
63
69
  /**
@@ -106,6 +106,8 @@ function parseMappings(text) {
106
106
  const originalOf = /* @__PURE__ */ new Map();
107
107
  const fieldOf = /* @__PURE__ */ new Map();
108
108
  const methodOf = /* @__PURE__ */ new Map();
109
+ const methods = [];
110
+ const fields = [];
109
111
  let owner = "";
110
112
  for (const line of text.split("\n")) {
111
113
  if (line.length === 0 || line.startsWith("#")) continue;
@@ -129,18 +131,33 @@ function parseMappings(text) {
129
131
  const open = signature.indexOf("(");
130
132
  if (open === -1) {
131
133
  fieldOf.set(`${owner}.${signature}`, obfuscated);
134
+ fields.push({
135
+ owner,
136
+ name: signature,
137
+ obfuscated
138
+ });
132
139
  continue;
133
140
  }
134
141
  const name = signature.slice(0, open);
135
142
  const params = signature.slice(open + 1, -1);
136
143
  const descriptor = `(${params.length === 0 ? "" : params.split(",").map((param) => typeDescriptor(param.trim())).join("")})${typeDescriptor(returnType)}`;
137
144
  methodOf.set(`${owner}.${name}${descriptor}`, obfuscated);
145
+ methods.push({
146
+ owner,
147
+ name,
148
+ descriptor,
149
+ obfuscated
150
+ });
138
151
  }
152
+ const nameOf = /* @__PURE__ */ new Map();
153
+ for (const field of fields) nameOf.set(`${obfuscatedOf.get(field.owner)}.${field.obfuscated}`, field.name);
154
+ for (const method of methods) nameOf.set(`${obfuscatedOf.get(method.owner)}.${method.obfuscated}${remapDescriptor(method.descriptor, obfuscatedOf)}`, method.name);
139
155
  return {
140
156
  obfuscatedOf,
141
157
  originalOf,
142
158
  fieldOf,
143
- methodOf
159
+ methodOf,
160
+ nameOf
144
161
  };
145
162
  }
146
163
  async function loadMappings(version, cacheDir) {
@@ -40,6 +40,11 @@ interface Mappings {
40
40
  */
41
41
  fieldOf: Map<string, string>;
42
42
  methodOf: Map<string, string>;
43
+ /**
44
+ * The other way: a member as the obfuscated client spells it (`eea$d.a(FF)Leea$d;`) to its original
45
+ * name (`strength`), for reading what the game's own code calls. Absent for an identity mapping.
46
+ */
47
+ nameOf?: Map<string, string>;
43
48
  }
44
49
  /**
45
50
  * A descriptor with every class in it renamed through the map: `(Lnet/minecraft/…/Block;)V` on an
@@ -1,2 +1,2 @@
1
- import { a as resolveTexture, i as flattenLoaderModel, n as ModelResolutionError, o as salvageJson, r as ResolvedModel, t as ModelLoader } from "../loader-DSir1-P0.js";
1
+ import { a as resolveTexture, i as flattenLoaderModel, n as ModelResolutionError, o as salvageJson, r as ResolvedModel, t as ModelLoader } from "../loader-BYyPIs9f.js";
2
2
  export { ModelLoader, ModelResolutionError, ResolvedModel, flattenLoaderModel, resolveTexture, salvageJson };
@@ -1,5 +1,5 @@
1
1
  import { r as modModelPackPath } from "./builtin-WkWjATeh.js";
2
- import { t as FolderResourceManager } from "./manager-BNibYkmI.js";
2
+ import { t as FolderResourceManager } from "./manager-D6zXmFrO.js";
3
3
  //#region src/mods/models.ts
4
4
  /**
5
5
  * Geometry for mod items the game draws in code. A `builtin/entity` item model
@@ -1,4 +1,4 @@
1
- import { a as ResourceManager } from "../manager-exOIcdyx.js";
1
+ import { a as ResourceManager } from "../manager-Ct0dEOMg.js";
2
2
  //#region src/mods/models.d.ts
3
3
  declare function curatedModelOverrides(): ResourceManager;
4
4
  //#endregion
@@ -1,2 +1,2 @@
1
- import { t as curatedModelOverrides } from "../models-CZjCOjs4.js";
1
+ import { t as curatedModelOverrides } from "../models-BsYA-NZg.js";
2
2
  export { curatedModelOverrides };
@@ -1,2 +1,2 @@
1
- import { i as prepareModResources, n as ModPreparation, r as PrepareModsOptions, t as LOADER_NAMESPACES } from "../prepare-OS7wL3jv.js";
1
+ import { i as prepareModResources, n as ModPreparation, r as PrepareModsOptions, t as LOADER_NAMESPACES } from "../prepare-BPzsZI_S.js";
2
2
  export { LOADER_NAMESPACES, ModPreparation, PrepareModsOptions, prepareModResources };
@@ -1,2 +1,2 @@
1
- import { n as prepareModResources, t as LOADER_NAMESPACES } from "../prepare-DxPEu9mo.js";
1
+ import { n as prepareModResources, t as LOADER_NAMESPACES } from "../prepare-sj36BP90.js";
2
2
  export { LOADER_NAMESPACES, prepareModResources };
@@ -1,5 +1,5 @@
1
- import { a as ResourceManager } from "../manager-exOIcdyx.js";
2
- import { n as MapResourceManager } from "../synthetic-B3R7mW9k.js";
1
+ import { a as ResourceManager } from "../manager-Ct0dEOMg.js";
2
+ import { n as MapResourceManager } from "../synthetic-CWtFtAkR.js";
3
3
  //#region src/mods/synthesize.d.ts
4
4
  interface SynthesisResult {
5
5
  models: MapResourceManager;
@@ -1,5 +1,5 @@
1
- import { a as ResourceManager } from "../manager-exOIcdyx.js";
2
- import { n as MapResourceManager } from "../synthetic-B3R7mW9k.js";
1
+ import { a as ResourceManager } from "../manager-Ct0dEOMg.js";
2
+ import { n as MapResourceManager } from "../synthetic-CWtFtAkR.js";
3
3
  //#region src/mods/tints.d.ts
4
4
  interface HarvestTintsOptions {
5
5
  /** Assets from 1.21.4+ releases of the same mods, read only for their tints. */
@@ -1,2 +1,2 @@
1
- import { n as harvestTintOverrides, t as curatedTintOverrides } from "../tints-CWQz6UkM.js";
1
+ import { n as harvestTintOverrides, t as curatedTintOverrides } from "../tints-CZeyKzMv.js";
2
2
  export { curatedTintOverrides, harvestTintOverrides };
@@ -1,5 +1,5 @@
1
- import { a as ResourceManager } from "./manager-exOIcdyx.js";
2
- import { r as ResolvedModel } from "./loader-DSir1-P0.js";
1
+ import { a as ResourceManager } from "./manager-Ct0dEOMg.js";
2
+ import { r as ResolvedModel } from "./loader-BYyPIs9f.js";
3
3
  //#region src/blocks/obj-mesh.d.ts
4
4
  interface MeshGroup {
5
5
  /** Sprite every triangle in this group samples. */
@@ -1,2 +1,2 @@
1
- import { a as RasterAssetFormat, c as encodeRasterAsset, i as EncodedIcon, n as EncodeOptions, o as encodeAnimatedIcon, r as EncodedAnimatedIcon, s as encodeIcon, t as AnimatedEncodeOptions } from "../encode-Br_vPrd8.js";
1
+ import { a as RasterAssetFormat, c as encodeRasterAsset, i as EncodedIcon, n as EncodeOptions, o as encodeAnimatedIcon, r as EncodedAnimatedIcon, s as encodeIcon, t as AnimatedEncodeOptions } from "../encode-BNEYHHR0.js";
2
2
  export { AnimatedEncodeOptions, EncodeOptions, EncodedAnimatedIcon, EncodedIcon, RasterAssetFormat, encodeAnimatedIcon, encodeIcon, encodeRasterAsset };
package/dist/pack.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { n as BiomeClimatePack, t as BiomeClimate } from "./biomes-CJDJQqJb.js";
1
+ import { n as BiomeClimatePack, t as BiomeClimate } from "./biomes-CnnhDCnk.js";
2
2
  import { a as BlockStateMultipartCase, d as matchesCondition, n as BlockProperties, o as BlockStateVariantCase, p as weightedVariantIndex, r as BlockStateDefinition, s as MultipartCondition, t as BlockModelVariant, u as evaluateBlockState } from "./blockstate-eval-BzznRcVY.js";
3
- import { n as ObjMesh, t as MeshGroup } from "./obj-mesh-ydhVfLKs.js";
4
- import { n as BlockTintPack, t as BlockTint } from "./tints-CQX8a1F0.js";
5
- import { _ as BlockPackSprite, a as BlockPackBlockStatesFile, b as BlockPackVariant, d as BlockPackLight, f as BlockPackLightFile, g as BlockPackRenderLayer, h as BlockPackModelsFile, i as BlockPackBlockState, l as BlockPackFace, m as BlockPackModel, n as BlockPackAtlasPage, o as BlockPackElement, p as BlockPackMetaFile, r as BlockPackBiomesFile, t as BlockPackAtlasFile, v as BlockPackSpriteFrame, y as BlockPackTintsFile } from "./pack-format-BqWf-DNc.js";
6
- import { t as blockLightLevel } from "./light-eval-D9x0ufZx.js";
7
- export { type BiomeClimate, type BiomeClimatePack, type BlockModelVariant, type BlockPackAtlasFile, type BlockPackAtlasPage, type BlockPackBiomesFile, type BlockPackBlockState, type BlockPackBlockStatesFile, type BlockPackElement, type BlockPackFace, type BlockPackLight, type BlockPackLightFile, type BlockPackMetaFile, type BlockPackModel, type BlockPackModelsFile, type BlockPackRenderLayer, type BlockPackSprite, type BlockPackSpriteFrame, type BlockPackTintsFile, type BlockPackVariant, type BlockProperties, type BlockStateDefinition, type BlockStateMultipartCase, type BlockStateVariantCase, type BlockTint, type BlockTintPack, type MeshGroup, type MultipartCondition, type ObjMesh, blockLightLevel, evaluateBlockState, matchesCondition, weightedVariantIndex };
3
+ import { t as GameRule } from "./game-rules-ThvdDG3B.js";
4
+ import { n as ObjMesh, t as MeshGroup } from "./obj-mesh-CzL0lOlJ.js";
5
+ import { n as BlockTintPack, t as BlockTint } from "./tints-DwFmEkf3.js";
6
+ import { B as BlockPackTagsFile, C as BlockPackBlockState, F as BlockPackModelsFile, H as BlockPackVariant, I as BlockPackRenderLayer, L as BlockPackSprite, M as BlockPackLightFile, N as BlockPackMetaFile, O as BlockPackFace, P as BlockPackModel, R as BlockPackSpriteFrame, S as BlockPackBiomesFile, T as BlockPackElement, V as BlockPackTintsFile, b as BlockPackAtlasPage, j as BlockPackLight, k as BlockPackGameRulesFile, n as PushReactionName, t as BlockBehaviour, v as BlockPackAdvancementsFile, w as BlockPackBlockStatesFile, x as BlockPackBehaviourFile, y as BlockPackAtlasFile, z as BlockPackStatesFile } from "./block-behaviour-9Tj_GIUC.js";
7
+ import { t as blockLightLevel } from "./light-eval-DMjK6xnb.js";
8
+ export { type BiomeClimate, type BiomeClimatePack, type BlockBehaviour, type BlockModelVariant, type BlockPackAdvancementsFile, type BlockPackAtlasFile, type BlockPackAtlasPage, type BlockPackBehaviourFile, type BlockPackBiomesFile, type BlockPackBlockState, type BlockPackBlockStatesFile, type BlockPackElement, type BlockPackFace, type BlockPackGameRulesFile, type BlockPackLight, type BlockPackLightFile, type BlockPackMetaFile, type BlockPackModel, type BlockPackModelsFile, type BlockPackRenderLayer, type BlockPackSprite, type BlockPackSpriteFrame, type BlockPackStatesFile, type BlockPackTagsFile, type BlockPackTintsFile, type BlockPackVariant, type BlockProperties, type BlockStateDefinition, type BlockStateMultipartCase, type BlockStateVariantCase, type BlockTint, type BlockTintPack, type GameRule, type MeshGroup, type MultipartCondition, type ObjMesh, type PushReactionName, blockLightLevel, evaluateBlockState, matchesCondition, weightedVariantIndex };
@@ -1,7 +1,7 @@
1
- import { a as ResourceManager } from "./manager-exOIcdyx.js";
2
- import { n as FloatTexture } from "./blend-C5UYzink.js";
1
+ import { a as ResourceManager } from "./manager-Ct0dEOMg.js";
2
+ import { n as FloatTexture } from "./blend-mJAeQB3C.js";
3
3
  import { a as LightingProfileName } from "./lighting-3FGRC3Af.js";
4
- import { n as AnimationLimits } from "./renderer-DbUmTFDb.js";
4
+ import { n as AnimationLimits } from "./renderer-QgROYvPv.js";
5
5
  //#region src/render/pipeline.d.ts
6
6
  interface PipelineSettings {
7
7
  builtin?: string;
@@ -1,4 +1,5 @@
1
1
  import { n as ResourceLocator } from "./locator-COMEtEn9.js";
2
+ import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-D6zXmFrO.js";
2
3
  import { l as toFloatTexture, t as blendPixel } from "./blend-KXMclcHk.js";
3
4
  import { t as ModelLoader } from "./loader-qOH0Jynq.js";
4
5
  import { c as renderModel, l as renderModelFrames, o as boxDownscale, s as pointResize } from "./obj-DPEK_xee.js";
@@ -6,7 +7,6 @@ import { a as renderGeo, t as findGeoForItem } from "./geo-BoDxwvz5.js";
6
7
  import { a as defaultProperties } from "./definition-ColsvWrH.js";
7
8
  import { i as resolveItem } from "./discovery-CD0QqxSF.js";
8
9
  import { a as resolveTints } from "./tints-B3WQcPtx.js";
9
- import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-BNibYkmI.js";
10
10
  import { t as loadAtlasResolver } from "./registry-DafxsAhG.js";
11
11
  import { n as TextureLoader } from "./loader-CsgtBuBo.js";
12
12
  import { t as encodeAnimatedIcon } from "./encode-LR9wxigC.js";
@@ -1,4 +1,4 @@
1
- import { a as ResourceManager } from "./manager-exOIcdyx.js";
1
+ import { a as ResourceManager } from "./manager-Ct0dEOMg.js";
2
2
  //#region src/mods/prepare.d.ts
3
3
  /** Loader-owned namespaces that never contain renderable mod items. */
4
4
  declare const LOADER_NAMESPACES: Set<string>;
@@ -1,4 +1,4 @@
1
- import { a as ResourceManager } from "./manager-exOIcdyx.js";
1
+ import { a as ResourceManager } from "./manager-Ct0dEOMg.js";
2
2
  //#region src/versions/prepare.d.ts
3
3
  /** Dotted-numeric compare handling both `1.21.8` and the `26.2` scheme. */
4
4
  declare function compareVersions(left: string, right: string): number;
@@ -1,8 +1,8 @@
1
1
  import { n as ResourceLocator } from "./locator-COMEtEn9.js";
2
2
  import { n as MapResourceManager, t as KindFilteredResourceManager } from "./synthetic-rc9BPT4P.js";
3
3
  import { t as reshapeLegacyAssets } from "./legacy-reshape-CcdstKyI.js";
4
- import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-BNibYkmI.js";
5
- import { t as JarResourceManager } from "./jar-CBYPMbw7.js";
4
+ import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-D6zXmFrO.js";
5
+ import { t as JarResourceManager } from "./jar-DvofBm71.js";
6
6
  //#region src/versions/prepare.ts
7
7
  /**
8
8
  * Version-era detection and asset preparation, replacing the file-tree surgery
@@ -1,8 +1,8 @@
1
- import { n as LayeredResourceManager } from "./manager-BNibYkmI.js";
2
- import { n as UnsafeJarError, t as JarResourceManager } from "./jar-CBYPMbw7.js";
3
- import { t as curatedModelOverrides } from "./models-CZjCOjs4.js";
1
+ import { n as LayeredResourceManager } from "./manager-D6zXmFrO.js";
2
+ import { n as UnsafeJarError, t as JarResourceManager } from "./jar-DvofBm71.js";
3
+ import { t as curatedModelOverrides } from "./models-BsYA-NZg.js";
4
4
  import { t as synthesizeItemModels } from "./synthesize-jTjVjPAt.js";
5
- import { n as harvestTintOverrides, t as curatedTintOverrides } from "./tints-CWQz6UkM.js";
5
+ import { n as harvestTintOverrides, t as curatedTintOverrides } from "./tints-CZeyKzMv.js";
6
6
  //#region src/mods/prepare.ts
7
7
  /**
8
8
  * Mod asset composition: mod jars layered under the vanilla base (vanilla wins
@@ -1,4 +1,4 @@
1
- import { n as FloatTexture, t as FaceShading } from "./blend-C5UYzink.js";
1
+ import { n as FloatTexture, t as FaceShading } from "./blend-mJAeQB3C.js";
2
2
  //#region src/render/rasterizer.d.ts
3
3
  /** The rectangle of a buffer written since it was last cleared. */
4
4
  interface DirtyRect {
@@ -1,2 +1,2 @@
1
- import { a as darkenTexture, c as shadeTexel, d as toFloatTexture, f as uvWindow, i as cloneFloatTexture, l as tintTexture, n as FloatTexture, o as q16, r as blendPixel, s as scaleTextureAlpha, t as FaceShading, u as toByteTexture } from "../blend-C5UYzink.js";
1
+ import { a as darkenTexture, c as shadeTexel, d as toFloatTexture, f as uvWindow, i as cloneFloatTexture, l as tintTexture, n as FloatTexture, o as q16, r as blendPixel, s as scaleTextureAlpha, t as FaceShading, u as toByteTexture } from "../blend-mJAeQB3C.js";
2
2
  export { FaceShading, FloatTexture, blendPixel, cloneFloatTexture, darkenTexture, q16, scaleTextureAlpha, shadeTexel, tintTexture, toByteTexture, toFloatTexture, uvWindow };
@@ -1,5 +1,5 @@
1
- import { n as FloatTexture } from "../blend-C5UYzink.js";
2
- import { n as FaceBuffer } from "../rasterizer-C2wgJZ6J.js";
1
+ import { n as FloatTexture } from "../blend-mJAeQB3C.js";
2
+ import { n as FaceBuffer } from "../rasterizer-DjnurUgD.js";
3
3
  //#region src/render/compose.d.ts
4
4
  declare function combineFaceBuffers(width: number, height: number, faces: FaceBuffer[]): FloatTexture;
5
5
  //#endregion
@@ -1,9 +1,9 @@
1
- import { a as ResourceManager } from "../manager-exOIcdyx.js";
2
- import { i as TextureLoader } from "../loader-59_eMa8e.js";
3
- import { t as ModelLoader } from "../loader-DSir1-P0.js";
4
- import { n as FloatTexture } from "../blend-C5UYzink.js";
5
- import { r as TintColor } from "../face-DqEd9G_U.js";
6
- import { i as RenderOptions } from "../renderer-DbUmTFDb.js";
1
+ import { a as ResourceManager } from "../manager-Ct0dEOMg.js";
2
+ import { i as TextureLoader } from "../loader-C4gsX_wO.js";
3
+ import { t as ModelLoader } from "../loader-BYyPIs9f.js";
4
+ import { n as FloatTexture } from "../blend-mJAeQB3C.js";
5
+ import { r as TintColor } from "../face-uWXECGNr.js";
6
+ import { i as RenderOptions } from "../renderer-QgROYvPv.js";
7
7
  //#region src/render/entity-fallback.d.ts
8
8
  /** The dye name a `<dye>_<thing>` mod item is prefixed with, or null. */
9
9
  declare function dyeVariantName(id: string): string | null;
@@ -1,2 +1,2 @@
1
- import { a as faceMaxZ, i as createShadeCache, n as RenderableFace, o as renderFace, r as TintColor, t as FaceShadeCache } from "../face-DqEd9G_U.js";
1
+ import { a as faceMaxZ, i as createShadeCache, n as RenderableFace, o as renderFace, r as TintColor, t as FaceShadeCache } from "../face-uWXECGNr.js";
2
2
  export { FaceShadeCache, RenderableFace, TintColor, createShadeCache, faceMaxZ, renderFace };
@@ -1,5 +1,5 @@
1
- import { a as ResourceManager } from "../manager-exOIcdyx.js";
2
- import { i as TextureLoader, r as Texture } from "../loader-59_eMa8e.js";
1
+ import { a as ResourceManager } from "../manager-Ct0dEOMg.js";
2
+ import { i as TextureLoader, r as Texture } from "../loader-C4gsX_wO.js";
3
3
  //#region src/render/fluid-bucket.d.ts
4
4
  /**
5
5
  * Paint the fluid into a bucket sprite IN PLACE (pass a copy, never a cached
@@ -1,2 +1,2 @@
1
- import { a as parseGeo, i as nameTokens, n as findGeoForItem, o as renderGeo, r as geoToFaces, t as ParsedGeo } from "../geo-C9QYeLVN.js";
1
+ import { a as parseGeo, i as nameTokens, n as findGeoForItem, o as renderGeo, r as geoToFaces, t as ParsedGeo } from "../geo-DsWwuC5o.js";
2
2
  export { ParsedGeo, findGeoForItem, geoToFaces, nameTokens, parseGeo, renderGeo };
@@ -1,5 +1,5 @@
1
- import { i as TextureLoader } from "../loader-59_eMa8e.js";
2
- import { r as TintColor } from "../face-DqEd9G_U.js";
1
+ import { i as TextureLoader } from "../loader-C4gsX_wO.js";
2
+ import { r as TintColor } from "../face-uWXECGNr.js";
3
3
  //#region src/render/legacy-tints.d.ts
4
4
  /**
5
5
  * Tints for a model rendered without an item definition (pre-1.21.4 eras and
@@ -1,10 +1,10 @@
1
1
  import { n as ResourceLocator } from "../locator-jDbdUeTd.js";
2
- import { a as ResourceManager } from "../manager-exOIcdyx.js";
3
- import { i as TextureLoader } from "../loader-59_eMa8e.js";
4
- import { r as ResolvedModel } from "../loader-DSir1-P0.js";
5
- import { n as FloatTexture } from "../blend-C5UYzink.js";
2
+ import { a as ResourceManager } from "../manager-Ct0dEOMg.js";
3
+ import { i as TextureLoader } from "../loader-C4gsX_wO.js";
4
+ import { r as ResolvedModel } from "../loader-BYyPIs9f.js";
5
+ import { n as FloatTexture } from "../blend-mJAeQB3C.js";
6
6
  import { n as Vec3 } from "../vector-DRKRi4--.js";
7
- import { i as RenderOptions } from "../renderer-DbUmTFDb.js";
7
+ import { i as RenderOptions } from "../renderer-QgROYvPv.js";
8
8
  //#region src/render/obj.d.ts
9
9
  interface ObjTriangle {
10
10
  positions: [Vec3, Vec3, Vec3];
@@ -1,2 +1,2 @@
1
- import { i as RenderedFrames, n as ItemRenderOutcome, r as PipelineSettings, t as ItemPipeline } from "../pipeline-DFuQa8ZT.js";
1
+ import { i as RenderedFrames, n as ItemRenderOutcome, r as PipelineSettings, t as ItemPipeline } from "../pipeline-DuPF3sap.js";
2
2
  export { ItemPipeline, ItemRenderOutcome, PipelineSettings, RenderedFrames };