@nodecraft/rendermite 1.3.2 → 1.4.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 (96) hide show
  1. package/dist/atlas/registry.d.ts +3 -3
  2. package/dist/atlas/sources.d.ts +1 -1
  3. package/dist/{atlas-pack-DRTrWcSU.d.ts → atlas-pack-D8745_wo.d.ts} +1 -1
  4. package/dist/biomes-5ZwYxMYe.js +384 -0
  5. package/dist/biomes-CJDJQqJb.d.ts +38 -0
  6. package/dist/{blend-8lnfxtLe.d.ts → blend-eT64Z6qm.d.ts} +1 -1
  7. package/dist/blocks/atlas-pack.d.ts +1 -1
  8. package/dist/blocks/biomes.d.ts +2 -0
  9. package/dist/blocks/biomes.js +2 -0
  10. package/dist/blocks/block-entities.d.ts +3 -3
  11. package/dist/blocks/cli.js +1 -1
  12. package/dist/blocks/export.d.ts +1 -1
  13. package/dist/blocks/export.js +1 -1
  14. package/dist/blocks/obj-mesh.d.ts +1 -1
  15. package/dist/blocks/pack-format.d.ts +2 -2
  16. package/dist/blocks/tints.d.ts +2 -2
  17. package/dist/blocks/tints.js +2 -2
  18. package/dist/{cli-Dq4CFSPi.js → cli-DqJtT-Ms.js} +5 -4
  19. package/dist/cli.js +7 -7
  20. package/dist/{descriptor-BVIoEpPO.js → descriptor-D7VKgeGT.js} +2 -2
  21. package/dist/{discovery-BPSUtdm4.d.ts → discovery-C5ZR4aoG.d.ts} +1 -1
  22. package/dist/dynamic/generators.d.ts +1 -1
  23. package/dist/{encode-DNcXXvYe.d.ts → encode-Cf8hI5OY.d.ts} +1 -1
  24. package/dist/{export-BIpqNU3H.d.ts → export-Bllg8Fw7.d.ts} +4 -2
  25. package/dist/{export-B9lH7Tek.js → export-kMoMes_a.js} +24 -7
  26. package/dist/{face-BKwkeTps.d.ts → face-CuC_Wnx9.d.ts} +2 -2
  27. package/dist/{generators-DhRov4RB.d.ts → generators-BnIzAftW.d.ts} +1 -1
  28. package/dist/index.d.ts +20 -19
  29. package/dist/index.js +9 -8
  30. package/dist/items/blockstate.d.ts +1 -1
  31. package/dist/items/discovery.d.ts +1 -1
  32. package/dist/{jar-CFkA-VgT.d.ts → jar-B5iRZQeL.d.ts} +1 -1
  33. package/dist/{jar-5aLDI0nT.js → jar-W2cV2ZVO.js} +7 -7
  34. package/dist/{loader-C_1_amsq.d.ts → loader-DSir1-P0.d.ts} +1 -1
  35. package/dist/{loader-Myy22TDL.d.ts → loader-DUlx29PC.d.ts} +1 -1
  36. package/dist/{manager-CYbAkWuT.js → manager-BNibYkmI.js} +32 -5
  37. package/dist/{manager-Cv1NeFyF.d.ts → manager-exOIcdyx.d.ts} +23 -1
  38. package/dist/models/loader.d.ts +1 -1
  39. package/dist/{models-CQwcTZcg.js → models-CZjCOjs4.js} +1 -1
  40. package/dist/mods/models.d.ts +1 -1
  41. package/dist/mods/models.js +1 -1
  42. package/dist/mods/prepare.d.ts +1 -1
  43. package/dist/mods/prepare.js +1 -1
  44. package/dist/mods/synthesize.d.ts +2 -2
  45. package/dist/mods/tints.d.ts +2 -2
  46. package/dist/mods/tints.js +1 -1
  47. package/dist/{obj-mesh-C6Sp4Ysc.d.ts → obj-mesh-ydhVfLKs.d.ts} +2 -2
  48. package/dist/output/encode.d.ts +1 -1
  49. package/dist/{pack-format-CfCP4kzy.d.ts → pack-format-BVC_B-ZW.d.ts} +12 -3
  50. package/dist/pack.d.ts +5 -4
  51. package/dist/{pipeline-DeGRR0CP.js → pipeline-B8e6x8Hh.js} +1 -1
  52. package/dist/{pipeline-BDvXcw20.d.ts → pipeline-BwToOnuZ.d.ts} +3 -3
  53. package/dist/{prepare-Cs6QDqie.d.ts → prepare-6pH3CNpg.d.ts} +1 -1
  54. package/dist/{prepare-C95vjt_o.js → prepare-8LswFoS-.js} +2 -2
  55. package/dist/{prepare-B8oPdGYz.js → prepare-C9gjqQTt.js} +4 -4
  56. package/dist/{prepare-Dce7-HAe.d.ts → prepare-OS7wL3jv.d.ts} +1 -1
  57. package/dist/{rasterizer-BSQHEhJ-.d.ts → rasterizer-BFAHGtdT.d.ts} +1 -1
  58. package/dist/render/blend.d.ts +1 -1
  59. package/dist/render/compose.d.ts +2 -2
  60. package/dist/render/entity-fallback.d.ts +6 -6
  61. package/dist/render/face.d.ts +1 -1
  62. package/dist/render/fluid-bucket.d.ts +2 -2
  63. package/dist/render/geo.d.ts +4 -4
  64. package/dist/render/legacy-tints.d.ts +2 -2
  65. package/dist/render/obj.d.ts +5 -5
  66. package/dist/render/pipeline.d.ts +1 -1
  67. package/dist/render/pipeline.js +1 -1
  68. package/dist/render/rasterizer.d.ts +1 -1
  69. package/dist/render/renderer.d.ts +1 -1
  70. package/dist/render/tints.d.ts +1 -1
  71. package/dist/{renderer-U20hnhbi.d.ts → renderer-C_DFi8DF.d.ts} +5 -5
  72. package/dist/resources/descriptor.d.ts +1 -1
  73. package/dist/resources/descriptor.js +1 -1
  74. package/dist/resources/entity-textures.d.ts +2 -2
  75. package/dist/resources/jar.d.ts +1 -1
  76. package/dist/resources/jar.js +1 -1
  77. package/dist/resources/manager.d.ts +1 -1
  78. package/dist/resources/manager.js +1 -1
  79. package/dist/resources/synthetic.d.ts +1 -1
  80. package/dist/{run-Diql5y56.js → run-B_JAUbXe.js} +4 -4
  81. package/dist/{run-CvIqiZ6T.d.ts → run-Bblci_CC.d.ts} +2 -2
  82. package/dist/run.d.ts +1 -1
  83. package/dist/run.js +1 -1
  84. package/dist/{sources-B9X9w3qP.d.ts → sources-BFuYpSSD.d.ts} +1 -1
  85. package/dist/{synthetic-Qk-BSUXO.d.ts → synthetic-B3R7mW9k.d.ts} +1 -1
  86. package/dist/textures/loader.d.ts +1 -1
  87. package/dist/{tints-DqhgFi8a.d.ts → tints-6z6ysGUs.d.ts} +2 -2
  88. package/dist/{tints-nxtGrqv5.js → tints-C1tT6pKk.js} +1 -1
  89. package/dist/{tints-a9FWZLma.js → tints-Cl0r-Ol3.js} +44 -9
  90. package/dist/{tints-2k3ZhkY3.d.ts → tints-DoBv5S9v.d.ts} +11 -4
  91. package/dist/versions/legacy-reshape.d.ts +1 -1
  92. package/dist/versions/prepare.d.ts +1 -1
  93. package/dist/versions/prepare.js +1 -1
  94. package/dist/workers/render-worker.d.ts +2 -2
  95. package/dist/workers/render-worker.js +2 -2
  96. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import { n as ResourceLocator } from "../locator-jDbdUeTd.js";
2
- import { a as ResourceManager } from "../manager-Cv1NeFyF.js";
3
- import { r as Texture } from "../loader-Myy22TDL.js";
4
- import { t as AtlasResolver } from "../sources-B9X9w3qP.js";
2
+ import { a as ResourceManager } from "../manager-exOIcdyx.js";
3
+ import { r as Texture } from "../loader-DUlx29PC.js";
4
+ import { t as AtlasResolver } from "../sources-BFuYpSSD.js";
5
5
  //#region src/atlas/registry.d.ts
6
6
  declare function loadAtlasResolver(resources: ResourceManager, loadTexture: (locator: ResourceLocator) => Promise<Texture | null>, onWarning?: (message: string) => void): Promise<AtlasResolver>;
7
7
  //#endregion
@@ -1,2 +1,2 @@
1
- import { a as HasTexture, c as SingleAtlasSource, d as parseAtlasSources, i as DirectoryAtlasSource, l as UnstitchAtlasSource, n as AtlasSource, o as PalettedPermutationsSource, r as AtlasSourceError, s as ResolvedSprite, t as AtlasResolver, u as createAtlasResolver } from "../sources-B9X9w3qP.js";
1
+ import { a as HasTexture, c as SingleAtlasSource, d as parseAtlasSources, i as DirectoryAtlasSource, l as UnstitchAtlasSource, n as AtlasSource, o as PalettedPermutationsSource, r as AtlasSourceError, s as ResolvedSprite, t as AtlasResolver, u as createAtlasResolver } from "../sources-BFuYpSSD.js";
2
2
  export { AtlasResolver, AtlasSource, AtlasSourceError, DirectoryAtlasSource, HasTexture, PalettedPermutationsSource, ResolvedSprite, SingleAtlasSource, UnstitchAtlasSource, createAtlasResolver, parseAtlasSources };
@@ -1,4 +1,4 @@
1
- import { r as Texture } from "./loader-Myy22TDL.js";
1
+ import { r as Texture } from "./loader-DUlx29PC.js";
2
2
  //#region src/blocks/atlas-pack.d.ts
3
3
  interface PackEntry {
4
4
  /** Caller's identifier; carried through to the emitted rect. */
@@ -0,0 +1,384 @@
1
+ //#region src/blocks/biomes.ts
2
+ /** `effects.water_color` where a biome does not override it, which is most of them. */
3
+ const DEFAULT_WATER_COLOR = "#3f76e4";
4
+ /** Every vanilla biome's climate, by id. Ordered so a regenerated table diffs cleanly. */
5
+ const VANILLA_BIOME_CLIMATES = {
6
+ "minecraft:badlands": {
7
+ temperature: 2,
8
+ downfall: 0,
9
+ grass: "#90814d",
10
+ foliage: "#9e814d"
11
+ },
12
+ "minecraft:bamboo_jungle": {
13
+ temperature: .95,
14
+ downfall: .9
15
+ },
16
+ "minecraft:basalt_deltas": {
17
+ temperature: 2,
18
+ downfall: 0
19
+ },
20
+ "minecraft:beach": {
21
+ temperature: .8,
22
+ downfall: .4
23
+ },
24
+ "minecraft:birch_forest": {
25
+ temperature: .6,
26
+ downfall: .6
27
+ },
28
+ "minecraft:cherry_grove": {
29
+ temperature: .5,
30
+ downfall: .8,
31
+ water: "#5db7ef",
32
+ grass: "#b6db61",
33
+ foliage: "#b6db61"
34
+ },
35
+ "minecraft:cold_ocean": {
36
+ temperature: .5,
37
+ downfall: .5,
38
+ water: "#3d57d6"
39
+ },
40
+ "minecraft:crimson_forest": {
41
+ temperature: 2,
42
+ downfall: 0
43
+ },
44
+ "minecraft:dappled_forest": {
45
+ temperature: .6,
46
+ downfall: .6,
47
+ water: "#375154",
48
+ grass: "#df6827",
49
+ foliage: "#e68e30",
50
+ dryFoliage: "#8c3a04"
51
+ },
52
+ "minecraft:dark_forest": {
53
+ temperature: .7,
54
+ downfall: .8,
55
+ modifier: "dark_forest",
56
+ dryFoliage: "#7b5334"
57
+ },
58
+ "minecraft:deep_cold_ocean": {
59
+ temperature: .5,
60
+ downfall: .5,
61
+ water: "#3d57d6"
62
+ },
63
+ "minecraft:deep_dark": {
64
+ temperature: .8,
65
+ downfall: .4
66
+ },
67
+ "minecraft:deep_frozen_ocean": {
68
+ temperature: .5,
69
+ downfall: .5,
70
+ water: "#3938c9"
71
+ },
72
+ "minecraft:deep_lukewarm_ocean": {
73
+ temperature: .5,
74
+ downfall: .5,
75
+ water: "#45adf2"
76
+ },
77
+ "minecraft:deep_ocean": {
78
+ temperature: .5,
79
+ downfall: .5
80
+ },
81
+ "minecraft:desert": {
82
+ temperature: 2,
83
+ downfall: 0
84
+ },
85
+ "minecraft:dripstone_caves": {
86
+ temperature: .8,
87
+ downfall: .4
88
+ },
89
+ "minecraft:end_barrens": {
90
+ temperature: .5,
91
+ downfall: .5
92
+ },
93
+ "minecraft:end_highlands": {
94
+ temperature: .5,
95
+ downfall: .5
96
+ },
97
+ "minecraft:end_midlands": {
98
+ temperature: .5,
99
+ downfall: .5
100
+ },
101
+ "minecraft:eroded_badlands": {
102
+ temperature: 2,
103
+ downfall: 0,
104
+ grass: "#90814d",
105
+ foliage: "#9e814d"
106
+ },
107
+ "minecraft:flower_forest": {
108
+ temperature: .7,
109
+ downfall: .8
110
+ },
111
+ "minecraft:forest": {
112
+ temperature: .7,
113
+ downfall: .8
114
+ },
115
+ "minecraft:frozen_ocean": {
116
+ temperature: 0,
117
+ downfall: .5,
118
+ water: "#3938c9"
119
+ },
120
+ "minecraft:frozen_peaks": {
121
+ temperature: -.7,
122
+ downfall: .9
123
+ },
124
+ "minecraft:frozen_river": {
125
+ temperature: 0,
126
+ downfall: .5,
127
+ water: "#3938c9"
128
+ },
129
+ "minecraft:grove": {
130
+ temperature: -.2,
131
+ downfall: .8
132
+ },
133
+ "minecraft:ice_spikes": {
134
+ temperature: 0,
135
+ downfall: .5
136
+ },
137
+ "minecraft:jagged_peaks": {
138
+ temperature: -.7,
139
+ downfall: .9
140
+ },
141
+ "minecraft:jungle": {
142
+ temperature: .95,
143
+ downfall: .9
144
+ },
145
+ "minecraft:lukewarm_ocean": {
146
+ temperature: .5,
147
+ downfall: .5,
148
+ water: "#45adf2"
149
+ },
150
+ "minecraft:lush_caves": {
151
+ temperature: .5,
152
+ downfall: .5
153
+ },
154
+ "minecraft:mangrove_swamp": {
155
+ temperature: .8,
156
+ downfall: .9,
157
+ water: "#3a7a6a",
158
+ modifier: "swamp",
159
+ foliage: "#8db127",
160
+ dryFoliage: "#7b5334"
161
+ },
162
+ "minecraft:meadow": {
163
+ temperature: .5,
164
+ downfall: .8,
165
+ water: "#0e4ecf"
166
+ },
167
+ "minecraft:mushroom_fields": {
168
+ temperature: .9,
169
+ downfall: 1
170
+ },
171
+ "minecraft:nether_wastes": {
172
+ temperature: 2,
173
+ downfall: 0
174
+ },
175
+ "minecraft:ocean": {
176
+ temperature: .5,
177
+ downfall: .5
178
+ },
179
+ "minecraft:old_growth_birch_forest": {
180
+ temperature: .6,
181
+ downfall: .6
182
+ },
183
+ "minecraft:old_growth_pine_taiga": {
184
+ temperature: .3,
185
+ downfall: .8
186
+ },
187
+ "minecraft:old_growth_spruce_taiga": {
188
+ temperature: .25,
189
+ downfall: .8
190
+ },
191
+ "minecraft:pale_garden": {
192
+ temperature: .7,
193
+ downfall: .8,
194
+ water: "#76889d",
195
+ grass: "#778272",
196
+ foliage: "#878d76",
197
+ dryFoliage: "#a0a69c"
198
+ },
199
+ "minecraft:plains": {
200
+ temperature: .8,
201
+ downfall: .4
202
+ },
203
+ "minecraft:river": {
204
+ temperature: .5,
205
+ downfall: .5
206
+ },
207
+ "minecraft:savanna": {
208
+ temperature: 2,
209
+ downfall: 0
210
+ },
211
+ "minecraft:savanna_plateau": {
212
+ temperature: 2,
213
+ downfall: 0
214
+ },
215
+ "minecraft:small_end_islands": {
216
+ temperature: .5,
217
+ downfall: .5
218
+ },
219
+ "minecraft:snowy_beach": {
220
+ temperature: .05,
221
+ downfall: .3,
222
+ water: "#3d57d6"
223
+ },
224
+ "minecraft:snowy_plains": {
225
+ temperature: 0,
226
+ downfall: .5
227
+ },
228
+ "minecraft:snowy_slopes": {
229
+ temperature: -.3,
230
+ downfall: .9
231
+ },
232
+ "minecraft:snowy_taiga": {
233
+ temperature: -.5,
234
+ downfall: .4,
235
+ water: "#3d57d6"
236
+ },
237
+ "minecraft:soul_sand_valley": {
238
+ temperature: 2,
239
+ downfall: 0
240
+ },
241
+ "minecraft:sparse_jungle": {
242
+ temperature: .95,
243
+ downfall: .8
244
+ },
245
+ "minecraft:stony_peaks": {
246
+ temperature: 1,
247
+ downfall: .3
248
+ },
249
+ "minecraft:stony_shore": {
250
+ temperature: .2,
251
+ downfall: .3
252
+ },
253
+ "minecraft:sulfur_caves": {
254
+ temperature: .8,
255
+ downfall: .4,
256
+ water: "#34bf89",
257
+ grass: "#aba64f"
258
+ },
259
+ "minecraft:sunflower_plains": {
260
+ temperature: .8,
261
+ downfall: .4
262
+ },
263
+ "minecraft:swamp": {
264
+ temperature: .8,
265
+ downfall: .9,
266
+ water: "#617b64",
267
+ modifier: "swamp",
268
+ foliage: "#6a7039",
269
+ dryFoliage: "#7b5334"
270
+ },
271
+ "minecraft:taiga": {
272
+ temperature: .25,
273
+ downfall: .8
274
+ },
275
+ "minecraft:the_end": {
276
+ temperature: .5,
277
+ downfall: .5
278
+ },
279
+ "minecraft:the_void": {
280
+ temperature: .5,
281
+ downfall: .5
282
+ },
283
+ "minecraft:warm_ocean": {
284
+ temperature: .5,
285
+ downfall: .5,
286
+ water: "#43d5ee"
287
+ },
288
+ "minecraft:warped_forest": {
289
+ temperature: 2,
290
+ downfall: 0
291
+ },
292
+ "minecraft:windswept_forest": {
293
+ temperature: .2,
294
+ downfall: .3
295
+ },
296
+ "minecraft:windswept_gravelly_hills": {
297
+ temperature: .2,
298
+ downfall: .3
299
+ },
300
+ "minecraft:windswept_hills": {
301
+ temperature: .2,
302
+ downfall: .3
303
+ },
304
+ "minecraft:windswept_savanna": {
305
+ temperature: 2,
306
+ downfall: 0
307
+ },
308
+ "minecraft:wooded_badlands": {
309
+ temperature: 2,
310
+ downfall: 0,
311
+ grass: "#90814d",
312
+ foliage: "#9e814d"
313
+ }
314
+ };
315
+ /** Vanilla writes `grass_color_modifier` as one of two names; anything else is a mod's typo. */
316
+ const MODIFIERS = /* @__PURE__ */ new Set(["dark_forest", "swamp"]);
317
+ /**
318
+ * A colour as biome data spells it. Vanilla's own files use `#rrggbb` now, mod
319
+ * jars built against older versions write the same value as a decimal int, and
320
+ * both mean the same 24 bits.
321
+ */
322
+ function biomeColor(value) {
323
+ if (typeof value === "string") {
324
+ const hex = /^#?([\da-f]{6})$/i.exec(value.trim());
325
+ return hex ? `#${hex[1].toLowerCase()}` : void 0;
326
+ }
327
+ if (typeof value === "number" && Number.isFinite(value)) return `#${(value & 16777215).toString(16).padStart(6, "0")}`;
328
+ }
329
+ /** One biome definition as a datapack states it, or `null` when it states no climate. */
330
+ function parseBiomeClimate(json) {
331
+ const biome = json;
332
+ if (typeof biome?.temperature !== "number" || typeof biome.downfall !== "number") return null;
333
+ const effects = biome.effects ?? {};
334
+ const modifier = typeof effects.grass_color_modifier === "string" && MODIFIERS.has(effects.grass_color_modifier) ? effects.grass_color_modifier : void 0;
335
+ const water = biomeColor(effects.water_color);
336
+ const grass = biomeColor(effects.grass_color);
337
+ const foliage = biomeColor(effects.foliage_color);
338
+ const dryFoliage = biomeColor(effects.dry_foliage_color);
339
+ return {
340
+ temperature: biome.temperature,
341
+ downfall: biome.downfall,
342
+ ...water !== void 0 && water !== "#3f76e4" && { water },
343
+ ...modifier && { modifier },
344
+ ...grass !== void 0 && { grass },
345
+ ...foliage !== void 0 && { foliage },
346
+ ...dryFoliage !== void 0 && { dryFoliage }
347
+ };
348
+ }
349
+ /**
350
+ * Climates for the namespaces a pack exports: whatever their datapacks declare,
351
+ * plus vanilla's own table when `minecraft` is one of them.
352
+ *
353
+ * A mod pack carries only its own biomes. The vanilla pack is always fetched
354
+ * beside it, so repeating vanilla's would be the same bytes in every one of the
355
+ * hundreds of mod packs published.
356
+ */
357
+ async function buildBiomeClimates(resources, namespaces) {
358
+ const pack = {};
359
+ const unreadable = [];
360
+ for (const namespace of namespaces) {
361
+ if (namespace === "minecraft") Object.assign(pack, VANILLA_BIOME_CLIMATES);
362
+ for (const locator of await resources.listResources("biome", namespace)) {
363
+ const raw = await resources.getResource("biome", locator);
364
+ if (raw === null) continue;
365
+ let climate;
366
+ try {
367
+ climate = parseBiomeClimate(JSON.parse(raw.toString("utf8")));
368
+ } catch {
369
+ climate = null;
370
+ }
371
+ if (climate === null) {
372
+ unreadable.push(locator.toString());
373
+ continue;
374
+ }
375
+ pack[locator.toString()] = climate;
376
+ }
377
+ }
378
+ return {
379
+ pack,
380
+ unreadable
381
+ };
382
+ }
383
+ //#endregion
384
+ export { parseBiomeClimate as i, VANILLA_BIOME_CLIMATES as n, buildBiomeClimates as r, DEFAULT_WATER_COLOR as t };
@@ -0,0 +1,38 @@
1
+ import { a as ResourceManager } from "./manager-exOIcdyx.js";
2
+ //#region src/blocks/biomes.d.ts
3
+ /** Where a biome's colours come from. Colours are `#rrggbb`, as everywhere else in the pack. */
4
+ interface BiomeClimate {
5
+ /** As the biome declares it, unclamped: the peaks run to -0.7 and the deserts to 2. */
6
+ temperature: number;
7
+ downfall: number;
8
+ /** `effects.water_color`, when it is not the default. */
9
+ water?: string;
10
+ /** `effects.grass_color_modifier`, applied after the colormap lookup. */
11
+ modifier?: 'dark_forest' | 'swamp';
12
+ /** `effects.grass_color`, which replaces the colormap lookup outright. */
13
+ grass?: string;
14
+ foliage?: string;
15
+ dryFoliage?: string;
16
+ }
17
+ /** `biomes.json`: biome id → climate. */
18
+ type BiomeClimatePack = Record<string, BiomeClimate>;
19
+ /** `effects.water_color` where a biome does not override it, which is most of them. */
20
+ declare const DEFAULT_WATER_COLOR = "#3f76e4";
21
+ /** Every vanilla biome's climate, by id. Ordered so a regenerated table diffs cleanly. */
22
+ declare const VANILLA_BIOME_CLIMATES: BiomeClimatePack;
23
+ /** One biome definition as a datapack states it, or `null` when it states no climate. */
24
+ declare function parseBiomeClimate(json: unknown): BiomeClimate | null;
25
+ /**
26
+ * Climates for the namespaces a pack exports: whatever their datapacks declare,
27
+ * plus vanilla's own table when `minecraft` is one of them.
28
+ *
29
+ * A mod pack carries only its own biomes. The vanilla pack is always fetched
30
+ * beside it, so repeating vanilla's would be the same bytes in every one of the
31
+ * hundreds of mod packs published.
32
+ */
33
+ declare function buildBiomeClimates(resources: ResourceManager, namespaces: readonly string[]): Promise<{
34
+ pack: BiomeClimatePack;
35
+ unreadable: string[];
36
+ }>;
37
+ //#endregion
38
+ export { buildBiomeClimates as a, VANILLA_BIOME_CLIMATES as i, BiomeClimatePack as n, parseBiomeClimate as o, DEFAULT_WATER_COLOR as r, BiomeClimate as t };
@@ -1,4 +1,4 @@
1
- import { r as Texture } from "./loader-Myy22TDL.js";
1
+ import { r as Texture } from "./loader-DUlx29PC.js";
2
2
  //#region src/render/blend.d.ts
3
3
  /** RGBA float pixels for render-time work; converted back to 8-bit at encode. */
4
4
  interface FloatTexture {
@@ -1,2 +1,2 @@
1
- import { a as PackedRect, i as PackedPage, n as PackOptions, o as packAtlas, r as PackedAtlas, t as PackEntry } from "../atlas-pack-DRTrWcSU.js";
1
+ import { a as PackedRect, i as PackedPage, n as PackOptions, o as packAtlas, r as PackedAtlas, t as PackEntry } from "../atlas-pack-D8745_wo.js";
2
2
  export { PackEntry, PackOptions, PackedAtlas, PackedPage, PackedRect, packAtlas };
@@ -0,0 +1,2 @@
1
+ import { a as buildBiomeClimates, i as VANILLA_BIOME_CLIMATES, n as BiomeClimatePack, o as parseBiomeClimate, r as DEFAULT_WATER_COLOR, t as BiomeClimate } from "../biomes-CJDJQqJb.js";
2
+ export { BiomeClimate, BiomeClimatePack, DEFAULT_WATER_COLOR, VANILLA_BIOME_CLIMATES, buildBiomeClimates, parseBiomeClimate };
@@ -0,0 +1,2 @@
1
+ import { i as parseBiomeClimate, n as VANILLA_BIOME_CLIMATES, r as buildBiomeClimates, t as DEFAULT_WATER_COLOR } from "../biomes-5ZwYxMYe.js";
2
+ export { DEFAULT_WATER_COLOR, VANILLA_BIOME_CLIMATES, buildBiomeClimates, parseBiomeClimate };
@@ -1,6 +1,6 @@
1
- import { a as ResourceManager } from "../manager-Cv1NeFyF.js";
2
- import { i as TextureLoader } from "../loader-Myy22TDL.js";
3
- import { t as ModelLoader } from "../loader-C_1_amsq.js";
1
+ import { a as ResourceManager } from "../manager-exOIcdyx.js";
2
+ import { i as TextureLoader } from "../loader-DUlx29PC.js";
3
+ import { t as ModelLoader } from "../loader-DSir1-P0.js";
4
4
  //#region src/blocks/block-entities.d.ts
5
5
  /**
6
6
  * What the table is allowed to look at. The vanilla families are a lookup, but
@@ -1,2 +1,2 @@
1
- import { t as runBlocksCli } from "../cli-Dq4CFSPi.js";
1
+ import { t as runBlocksCli } from "../cli-DqJtT-Ms.js";
2
2
  export { runBlocksCli };
@@ -1,2 +1,2 @@
1
- import { i as exportBlockPack, n as BlockPackResult, r as ExportBlockPackOptions, t as BlockPackFailure } from "../export-BIpqNU3H.js";
1
+ import { i as exportBlockPack, n as BlockPackResult, r as ExportBlockPackOptions, t as BlockPackFailure } from "../export-Bllg8Fw7.js";
2
2
  export { BlockPackFailure, BlockPackResult, ExportBlockPackOptions, exportBlockPack };
@@ -1,2 +1,2 @@
1
- import { t as exportBlockPack } from "../export-B9lH7Tek.js";
1
+ import { t as exportBlockPack } from "../export-kMoMes_a.js";
2
2
  export { exportBlockPack };
@@ -1,2 +1,2 @@
1
- import { i as buildObjMesh, n as ObjMesh, r as ObjMeshError, t as MeshGroup } from "../obj-mesh-C6Sp4Ysc.js";
1
+ import { i as buildObjMesh, n as ObjMesh, r as ObjMeshError, t as MeshGroup } from "../obj-mesh-ydhVfLKs.js";
2
2
  export { MeshGroup, ObjMesh, ObjMeshError, buildObjMesh };
@@ -1,2 +1,2 @@
1
- import { a as BlockPackElement, c as BlockPackModel, d as BlockPackSprite, f as BlockPackSpriteFrame, i as BlockPackBlockStatesFile, l as BlockPackModelsFile, m as BlockPackVariant, n as BlockPackAtlasPage, o as BlockPackFace, p as BlockPackTintsFile, r as BlockPackBlockState, s as BlockPackMetaFile, t as BlockPackAtlasFile, u as BlockPackRenderLayer } from "../pack-format-CfCP4kzy.js";
2
- export { BlockPackAtlasFile, BlockPackAtlasPage, BlockPackBlockState, BlockPackBlockStatesFile, BlockPackElement, BlockPackFace, BlockPackMetaFile, BlockPackModel, BlockPackModelsFile, BlockPackRenderLayer, BlockPackSprite, BlockPackSpriteFrame, BlockPackTintsFile, BlockPackVariant };
1
+ import { a as BlockPackBlockStatesFile, c as BlockPackMetaFile, d as BlockPackRenderLayer, f as BlockPackSprite, h as BlockPackVariant, i as BlockPackBlockState, l as BlockPackModel, m as BlockPackTintsFile, n as BlockPackAtlasPage, o as BlockPackElement, p as BlockPackSpriteFrame, r as BlockPackBiomesFile, s as BlockPackFace, t as BlockPackAtlasFile, u as BlockPackModelsFile } from "../pack-format-BVC_B-ZW.js";
2
+ export { BlockPackAtlasFile, BlockPackAtlasPage, BlockPackBiomesFile, BlockPackBlockState, BlockPackBlockStatesFile, BlockPackElement, BlockPackFace, BlockPackMetaFile, BlockPackModel, BlockPackModelsFile, BlockPackRenderLayer, BlockPackSprite, BlockPackSpriteFrame, BlockPackTintsFile, BlockPackVariant };
@@ -1,2 +1,2 @@
1
- import { i as buildBlockTints, n as BlockTintPack, r as BuiltBlockTints, t as BlockTint } from "../tints-2k3ZhkY3.js";
2
- export { BlockTint, BlockTintPack, BuiltBlockTints, buildBlockTints };
1
+ import { a as buildBlockTints, i as UNREGISTERED_TINTS, n as BlockTintPack, r as BuiltBlockTints, t as BlockTint } from "../tints-DoBv5S9v.js";
2
+ export { BlockTint, BlockTintPack, BuiltBlockTints, UNREGISTERED_TINTS, buildBlockTints };
@@ -1,2 +1,2 @@
1
- import { t as buildBlockTints } from "../tints-a9FWZLma.js";
2
- export { buildBlockTints };
1
+ import { n as buildBlockTints, t as UNREGISTERED_TINTS } from "../tints-Cl0r-Ol3.js";
2
+ export { UNREGISTERED_TINTS, buildBlockTints };
@@ -1,9 +1,9 @@
1
1
  import { n as builtinPackPath } from "./builtin-WkWjATeh.js";
2
- import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-CYbAkWuT.js";
3
- import { t as exportBlockPack } from "./export-B9lH7Tek.js";
4
- import { n as prepareModResources } from "./prepare-B8oPdGYz.js";
2
+ import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-BNibYkmI.js";
3
+ import { t as exportBlockPack } from "./export-kMoMes_a.js";
4
+ import { n as prepareModResources } from "./prepare-C9gjqQTt.js";
5
5
  import { t as downloadClientJar } from "./download-1wAfrGKx.js";
6
- import { a as prepareVersionResources, r as compareVersions } from "./prepare-C95vjt_o.js";
6
+ import { a as prepareVersionResources, r as compareVersions } from "./prepare-8LswFoS-.js";
7
7
  import path from "node:path";
8
8
  import os from "node:os";
9
9
  import { parseArgs } from "node:util";
@@ -151,6 +151,7 @@ async function runBlocksCli(argv) {
151
151
  }
152
152
  });
153
153
  console.log(`\n${result.blocks} blocks, ${result.models} models, ${result.sprites} sprites across ${result.pages} atlas page(s); ${result.writtenFiles} files written.`);
154
+ console.log(result.biomes > 0 ? `${result.biomes} biomes described in biomes.json.` : "No biomes to describe; biomes.json not written.");
154
155
  console.log(`${result.failures.length} entries in failures.json.`);
155
156
  return 0;
156
157
  } finally {
package/dist/cli.js CHANGED
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { n as builtinPackPath, t as bedCompatPath } from "./builtin-WkWjATeh.js";
3
- import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-CYbAkWuT.js";
4
- import { t as curatedModelOverrides } from "./models-CQwcTZcg.js";
5
- import { n as harvestTintOverrides, t as curatedTintOverrides } from "./tints-nxtGrqv5.js";
6
- import { t as JarResourceManager } from "./jar-5aLDI0nT.js";
3
+ import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-BNibYkmI.js";
4
+ import { t as curatedModelOverrides } from "./models-CZjCOjs4.js";
5
+ import { n as harvestTintOverrides, t as curatedTintOverrides } from "./tints-C1tT6pKk.js";
6
+ import { t as JarResourceManager } from "./jar-W2cV2ZVO.js";
7
7
  import { t as downloadClientJar } from "./download-1wAfrGKx.js";
8
- import { a as prepareVersionResources, i as eraForVersion, n as GEOMETRY_DONOR_VERSIONS } from "./prepare-C95vjt_o.js";
9
- import { t as runBlocksCli } from "./cli-Dq4CFSPi.js";
10
- import { t as run } from "./run-Diql5y56.js";
8
+ import { a as prepareVersionResources, i as eraForVersion, n as GEOMETRY_DONOR_VERSIONS } from "./prepare-8LswFoS-.js";
9
+ import { t as runBlocksCli } from "./cli-DqJtT-Ms.js";
10
+ import { t as run } from "./run-B_JAUbXe.js";
11
11
  import path from "node:path";
12
12
  import os from "node:os";
13
13
  import { parseArgs } from "node:util";
@@ -1,6 +1,6 @@
1
- import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-CYbAkWuT.js";
1
+ import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-BNibYkmI.js";
2
2
  import { n as MapResourceManager, t as KindFilteredResourceManager } from "./synthetic-rc9BPT4P.js";
3
- import { t as JarResourceManager } from "./jar-5aLDI0nT.js";
3
+ import { t as JarResourceManager } from "./jar-W2cV2ZVO.js";
4
4
  //#region src/resources/descriptor.ts
5
5
  /**
6
6
  * Serializable descriptions of a resource tree, so the same layered tree can be
@@ -1,4 +1,4 @@
1
- import { a as ResourceManager } from "./manager-Cv1NeFyF.js";
1
+ import { a as ResourceManager } from "./manager-exOIcdyx.js";
2
2
  import { i as ItemRenderInstruction, r as ItemProperties } from "./definition-ricL7Jqf.js";
3
3
  //#region src/items/discovery.d.ts
4
4
  declare class ItemResolutionError extends Error {}
@@ -1,2 +1,2 @@
1
- import { a as TRIM_DARKER_MATERIALS, i as POTTERY_SHERDS, n as DynamicItem, o as TRIM_MATERIALS, r as DynamicResources, s as builtinDynamicResources, t as ARMOR_ITEM_TYPES } from "../generators-DhRov4RB.js";
1
+ import { a as TRIM_DARKER_MATERIALS, i as POTTERY_SHERDS, n as DynamicItem, o as TRIM_MATERIALS, r as DynamicResources, s as builtinDynamicResources, t as ARMOR_ITEM_TYPES } from "../generators-BnIzAftW.js";
2
2
  export { ARMOR_ITEM_TYPES, DynamicItem, DynamicResources, POTTERY_SHERDS, TRIM_DARKER_MATERIALS, TRIM_MATERIALS, builtinDynamicResources };
@@ -1,4 +1,4 @@
1
- import { n as FloatTexture } from "./blend-8lnfxtLe.js";
1
+ import { n as FloatTexture } from "./blend-eT64Z6qm.js";
2
2
  //#region src/output/encode.d.ts
3
3
  interface EncodedIcon {
4
4
  png: Buffer;
@@ -1,4 +1,4 @@
1
- import { a as ResourceManager } from "./manager-Cv1NeFyF.js";
1
+ import { a as ResourceManager } from "./manager-exOIcdyx.js";
2
2
  //#region src/blocks/export.d.ts
3
3
  interface ExportBlockPackOptions {
4
4
  resources: ResourceManager;
@@ -27,7 +27,7 @@ interface BlockPackFailure {
27
27
  * `intentional` is not a failure: it marks a block that is empty because the
28
28
  * game draws nothing for it. Filter it out to get the real gaps.
29
29
  */
30
- kind: 'blockstate' | 'model' | 'texture' | 'sprite' | 'geometry' | 'tint' | 'intentional';
30
+ kind: 'blockstate' | 'model' | 'texture' | 'sprite' | 'geometry' | 'tint' | 'biome' | 'intentional';
31
31
  reason: string;
32
32
  }
33
33
  interface BlockPackResult {
@@ -35,6 +35,8 @@ interface BlockPackResult {
35
35
  models: number;
36
36
  sprites: number;
37
37
  pages: number;
38
+ /** Biomes described in `biomes.json`; `0` means the file was not written. */
39
+ biomes: number;
38
40
  /** Files actually written — the only trustworthy success signal. */
39
41
  writtenFiles: number;
40
42
  failures: BlockPackFailure[];