bedrock-kit 0.0.3

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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/bedrockKit.d.ts +32 -0
  4. package/dist/bedrockKit.d.ts.map +1 -0
  5. package/dist/bedrockKit.js +33 -0
  6. package/dist/bedrockKit.js.map +1 -0
  7. package/dist/internal/addon.d.ts +198 -0
  8. package/dist/internal/addon.d.ts.map +1 -0
  9. package/dist/internal/addon.js +562 -0
  10. package/dist/internal/addon.js.map +1 -0
  11. package/dist/internal/animation.d.ts +53 -0
  12. package/dist/internal/animation.d.ts.map +1 -0
  13. package/dist/internal/animation.js +47 -0
  14. package/dist/internal/animation.js.map +1 -0
  15. package/dist/internal/attachable.d.ts +31 -0
  16. package/dist/internal/attachable.d.ts.map +1 -0
  17. package/dist/internal/attachable.js +35 -0
  18. package/dist/internal/attachable.js.map +1 -0
  19. package/dist/internal/biome.d.ts +62 -0
  20. package/dist/internal/biome.d.ts.map +1 -0
  21. package/dist/internal/biome.js +75 -0
  22. package/dist/internal/biome.js.map +1 -0
  23. package/dist/internal/block.d.ts +55 -0
  24. package/dist/internal/block.d.ts.map +1 -0
  25. package/dist/internal/block.js +75 -0
  26. package/dist/internal/block.js.map +1 -0
  27. package/dist/internal/entity.d.ts +107 -0
  28. package/dist/internal/entity.d.ts.map +1 -0
  29. package/dist/internal/entity.js +148 -0
  30. package/dist/internal/entity.js.map +1 -0
  31. package/dist/internal/item.d.ts +72 -0
  32. package/dist/internal/item.d.ts.map +1 -0
  33. package/dist/internal/item.js +103 -0
  34. package/dist/internal/item.js.map +1 -0
  35. package/dist/internal/itemStack.d.ts +27 -0
  36. package/dist/internal/itemStack.d.ts.map +1 -0
  37. package/dist/internal/itemStack.js +23 -0
  38. package/dist/internal/itemStack.js.map +1 -0
  39. package/dist/internal/lootTable.d.ts +38 -0
  40. package/dist/internal/lootTable.d.ts.map +1 -0
  41. package/dist/internal/lootTable.js +57 -0
  42. package/dist/internal/lootTable.js.map +1 -0
  43. package/dist/internal/particle.d.ts +35 -0
  44. package/dist/internal/particle.d.ts.map +1 -0
  45. package/dist/internal/particle.js +42 -0
  46. package/dist/internal/particle.js.map +1 -0
  47. package/dist/internal/recipe.d.ts +89 -0
  48. package/dist/internal/recipe.d.ts.map +1 -0
  49. package/dist/internal/recipe.js +198 -0
  50. package/dist/internal/recipe.js.map +1 -0
  51. package/dist/internal/renderController.d.ts +24 -0
  52. package/dist/internal/renderController.d.ts.map +1 -0
  53. package/dist/internal/renderController.js +19 -0
  54. package/dist/internal/renderController.js.map +1 -0
  55. package/dist/internal/sound.d.ts +85 -0
  56. package/dist/internal/sound.d.ts.map +1 -0
  57. package/dist/internal/sound.js +64 -0
  58. package/dist/internal/sound.js.map +1 -0
  59. package/dist/internal/spawnRule.d.ts +44 -0
  60. package/dist/internal/spawnRule.d.ts.map +1 -0
  61. package/dist/internal/spawnRule.js +57 -0
  62. package/dist/internal/spawnRule.js.map +1 -0
  63. package/dist/internal/tag.d.ts +43 -0
  64. package/dist/internal/tag.d.ts.map +1 -0
  65. package/dist/internal/tag.js +8 -0
  66. package/dist/internal/tag.js.map +1 -0
  67. package/dist/internal/tradingTable.d.ts +34 -0
  68. package/dist/internal/tradingTable.d.ts.map +1 -0
  69. package/dist/internal/tradingTable.js +62 -0
  70. package/dist/internal/tradingTable.js.map +1 -0
  71. package/dist/internal/types.d.ts +97 -0
  72. package/dist/internal/types.d.ts.map +1 -0
  73. package/dist/internal/types.js +3 -0
  74. package/dist/internal/types.js.map +1 -0
  75. package/dist/internal/utils.d.ts +39 -0
  76. package/dist/internal/utils.d.ts.map +1 -0
  77. package/dist/internal/utils.js +137 -0
  78. package/dist/internal/utils.js.map +1 -0
  79. package/package.json +35 -0
@@ -0,0 +1,562 @@
1
+ import { join, resolve, posix } from "node:path";
2
+ import { diskEntries, browserEntries, packDataFromFiles, readJSONFromDisk, extractIdentifier, } from "./utils.js";
3
+ import { Tag } from "./tag.js";
4
+ import { Item } from "./item.js";
5
+ import { Block } from "./block.js";
6
+ import { Entity } from "./entity.js";
7
+ import { Recipe } from "./recipe.js";
8
+ import { LootTable } from "./lootTable.js";
9
+ import { SpawnRule } from "./spawnRule.js";
10
+ import { Biome } from "./biome.js";
11
+ import { Animation, AnimationController } from "./animation.js";
12
+ import { RenderController } from "./renderController.js";
13
+ import { Particle } from "./particle.js";
14
+ import { Attachable } from "./attachable.js";
15
+ import { TradingTable } from "./tradingTable.js";
16
+ import { SoundDefinition, MusicDefinition } from "./sound.js";
17
+ /**
18
+ * The main entry point for bedrockKit. Represents a Minecraft Bedrock addon
19
+ * consisting of a behavior pack and a resource pack.
20
+ *
21
+ * **Deno / Node.js** — synchronous, reads from disk:
22
+ * ```ts
23
+ * const addon = new AddOn("./vanilla_behavior_pack", "./vanilla_resource_pack");
24
+ * ```
25
+ *
26
+ * **Browser** — async, reads from `File[]` supplied by a folder picker:
27
+ * ```ts
28
+ * const addon = await AddOn.fromFileList(
29
+ * Array.from(bpInput.files!),
30
+ * Array.from(rpInput.files!),
31
+ * );
32
+ * ```
33
+ *
34
+ * Collections are lazy-loaded on first access and cached for subsequent calls.
35
+ * Connective tissue files (texture maps, sound definitions, music definitions, sound events)
36
+ * are loaded eagerly at construction time.
37
+ */
38
+ export class AddOn {
39
+ // ── Constructors ─────────────────────────────────────────────────────────
40
+ /**
41
+ * Creates a new AddOn instance that reads from disk.
42
+ * Works in Deno and Node.js. Paths are resolved to absolute on construction.
43
+ * Connective tissue files are loaded immediately; everything else is lazy.
44
+ */
45
+ constructor(behaviorPackPath, resourcePackPath) {
46
+ // Internal stores — all lazy
47
+ this._items = null;
48
+ this._blocks = null;
49
+ this._entities = null;
50
+ this._recipes = null;
51
+ this._lootTables = null;
52
+ this._spawnRules = null;
53
+ this._biomes = null;
54
+ this._animations = null;
55
+ this._animationControllers = null;
56
+ this._renderControllers = null;
57
+ this._particles = null;
58
+ this._attachables = null;
59
+ this._tradingTables = null;
60
+ // Browser PackData — populated only by fromFileList
61
+ this._bpData = null;
62
+ this._rpData = null;
63
+ this.behaviorPackPath = resolve(behaviorPackPath);
64
+ this.resourcePackPath = resolve(resourcePackPath);
65
+ this.itemTextures = readJSONFromDisk(join(this.resourcePackPath, "textures", "item_texture.json"));
66
+ this.terrainTextures = readJSONFromDisk(join(this.resourcePackPath, "textures", "terrain_texture.json"));
67
+ this.soundDefinitions = this._loadSoundDefinitions();
68
+ this.musicDefinitions = this._loadMusicDefinitions();
69
+ this.entitySoundEvents = this._loadEntitySoundEvents();
70
+ this.blockSoundEvents = this._loadBlockSoundEvents();
71
+ }
72
+ /** Internal factory used by `fromFileList`. Bypasses disk I/O entirely. */
73
+ static _fromPackData(bpData, rpData) {
74
+ const addon = Object.create(AddOn.prototype);
75
+ addon.behaviorPackPath = "";
76
+ addon.resourcePackPath = "";
77
+ addon._bpData = bpData;
78
+ addon._rpData = rpData;
79
+ addon.itemTextures =
80
+ rpData.get("textures/item_texture.json") ?? null;
81
+ addon.terrainTextures =
82
+ rpData.get("textures/terrain_texture.json") ?? null;
83
+ addon._items = null;
84
+ addon._blocks = null;
85
+ addon._entities = null;
86
+ addon._recipes = null;
87
+ addon._lootTables = null;
88
+ addon._spawnRules = null;
89
+ addon._biomes = null;
90
+ addon._animations = null;
91
+ addon._animationControllers = null;
92
+ addon._renderControllers = null;
93
+ addon._particles = null;
94
+ addon._attachables = null;
95
+ addon._tradingTables = null;
96
+ addon.soundDefinitions = addon._loadSoundDefinitions();
97
+ addon.musicDefinitions = addon._loadMusicDefinitions();
98
+ addon.entitySoundEvents = addon._loadEntitySoundEvents();
99
+ addon.blockSoundEvents = addon._loadBlockSoundEvents();
100
+ return addon;
101
+ }
102
+ /**
103
+ * Creates an AddOn from two `File[]` arrays for browser folder pickers.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const addon = await AddOn.fromFileList(
108
+ * Array.from(bpInput.files!),
109
+ * Array.from(rpInput.files!),
110
+ * );
111
+ * ```
112
+ */
113
+ static async fromFileList(bpFiles, rpFiles) {
114
+ const [bpData, rpData] = await Promise.all([
115
+ packDataFromFiles(bpFiles),
116
+ packDataFromFiles(rpFiles),
117
+ ]);
118
+ return AddOn._fromPackData(bpData, rpData);
119
+ }
120
+ // ── Internal helpers ─────────────────────────────────────────────────────
121
+ get _isBrowser() {
122
+ return this._bpData !== null || this._rpData !== null;
123
+ }
124
+ _bpEntries(subdir) {
125
+ return this._isBrowser
126
+ ? browserEntries(this._bpData, subdir)
127
+ : diskEntries(this.behaviorPackPath, subdir);
128
+ }
129
+ _rpEntries(subdir) {
130
+ return this._isBrowser
131
+ ? browserEntries(this._rpData, subdir)
132
+ : diskEntries(this.resourcePackPath, subdir);
133
+ }
134
+ // ── Connective tissue ────────────────────────────────────────────────────
135
+ // itemTextures, terrainTextures, soundDefinitions, musicDefinitions,
136
+ // entitySoundEvents, blockSoundEvents are all declared as readonly properties above.
137
+ // ── Items ─────────────────────────────────────────────────────────────────
138
+ /** Returns the item with the given namespaced identifier, or null if not found. */
139
+ getItem(identifier) {
140
+ return this._itemStore.get(identifier) ?? null;
141
+ }
142
+ /** Returns all items loaded from the behavior pack's `items/` directory. */
143
+ getAllItems() { return [...this._itemStore.values()]; }
144
+ get _itemStore() {
145
+ if (!this._items)
146
+ this._items = this._loadItems();
147
+ return this._items;
148
+ }
149
+ // ── Blocks ────────────────────────────────────────────────────────────────
150
+ /** Returns the block with the given namespaced identifier, or null if not found. */
151
+ getBlock(identifier) {
152
+ return this._blockStore.get(identifier) ?? null;
153
+ }
154
+ /** Returns all blocks loaded from the behavior pack's `blocks/` directory. */
155
+ getAllBlocks() { return [...this._blockStore.values()]; }
156
+ get _blockStore() {
157
+ if (!this._blocks)
158
+ this._blocks = this._loadBlocks();
159
+ return this._blocks;
160
+ }
161
+ // ── Entities ──────────────────────────────────────────────────────────────
162
+ /** Returns the entity with the given namespaced identifier, or null if not found. */
163
+ getEntity(identifier) {
164
+ return this._entityStore.get(identifier) ?? null;
165
+ }
166
+ /** Returns all entities found across both packs, merged by identifier. */
167
+ getAllEntities() { return [...this._entityStore.values()]; }
168
+ get _entityStore() {
169
+ if (!this._entities)
170
+ this._entities = this._loadEntities();
171
+ return this._entities;
172
+ }
173
+ // ── Recipes ───────────────────────────────────────────────────────────────
174
+ /** Returns all recipes that produce the given item identifier. */
175
+ getRecipesFor(identifier) {
176
+ return this._recipeStore.filter((r) => r.getResultStack()?.identifier === identifier);
177
+ }
178
+ /** Returns all recipes that use the given item identifier as an ingredient. */
179
+ getRecipesUsingItem(identifier) {
180
+ return this._recipeStore.filter((r) => r.usesItem(identifier));
181
+ }
182
+ /** Returns all recipes that use the given tag id as an ingredient. */
183
+ getRecipesUsingTag(tagId) {
184
+ return this._recipeStore.filter((r) => r.getAllIngredients().some((ing) => ing instanceof Tag && ing.id === tagId));
185
+ }
186
+ /** Returns all recipes loaded from the behavior pack's `recipes/` directory. */
187
+ getAllRecipes() { return [...this._recipeStore]; }
188
+ get _recipeStore() {
189
+ if (!this._recipes)
190
+ this._recipes = this._loadRecipes();
191
+ return this._recipes;
192
+ }
193
+ // ── Loot Tables ───────────────────────────────────────────────────────────
194
+ /**
195
+ * Returns the loot table at the given path relative to the behavior pack root.
196
+ * Normalises backslashes automatically.
197
+ */
198
+ getLootTableByPath(relativePath) {
199
+ return this._lootStore.get(relativePath.replace(/\\/g, "/")) ?? null;
200
+ }
201
+ /** Returns all loot tables loaded from the behavior pack's `loot_tables/` directory. */
202
+ getAllLootTables() { return [...this._lootStore.values()]; }
203
+ get _lootStore() {
204
+ if (!this._lootTables)
205
+ this._lootTables = this._loadLootTables();
206
+ return this._lootTables;
207
+ }
208
+ // ── Spawn Rules ───────────────────────────────────────────────────────────
209
+ /** Returns the spawn rule for the given entity identifier, or null if none exists. */
210
+ getSpawnRule(identifier) {
211
+ return this._spawnStore.get(identifier) ?? null;
212
+ }
213
+ /** Returns all spawn rules loaded from the behavior pack's `spawn_rules/` directory. */
214
+ getAllSpawnRules() { return [...this._spawnStore.values()]; }
215
+ get _spawnStore() {
216
+ if (!this._spawnRules)
217
+ this._spawnRules = this._loadSpawnRules();
218
+ return this._spawnRules;
219
+ }
220
+ // ── Biomes ────────────────────────────────────────────────────────────────
221
+ /** Returns the biome with the given namespaced identifier, or null if not found. */
222
+ getBiome(identifier) {
223
+ return this._biomeStore.get(identifier) ?? null;
224
+ }
225
+ /** Returns all biomes loaded from the behavior pack's `biomes/` directory. */
226
+ getAllBiomes() { return [...this._biomeStore.values()]; }
227
+ get _biomeStore() {
228
+ if (!this._biomes)
229
+ this._biomes = this._loadBiomes();
230
+ return this._biomes;
231
+ }
232
+ // ── Animations ────────────────────────────────────────────────────────────
233
+ /** Returns the animation with the given full ID, or null if not found. */
234
+ getAnimation(id) {
235
+ return this._animStore.get(id) ?? null;
236
+ }
237
+ /** Returns all animations loaded from the resource pack's `animations/` directory. */
238
+ getAllAnimations() { return [...this._animStore.values()]; }
239
+ get _animStore() {
240
+ if (!this._animations)
241
+ this._animations = this._loadAnimations();
242
+ return this._animations;
243
+ }
244
+ // ── Animation Controllers ─────────────────────────────────────────────────
245
+ /** Returns the animation controller with the given full ID, or null if not found. */
246
+ getAnimationController(id) {
247
+ return this._animCtrlStore.get(id) ?? null;
248
+ }
249
+ /** Returns all animation controllers from the resource pack's `animation_controllers/` directory. */
250
+ getAllAnimationControllers() { return [...this._animCtrlStore.values()]; }
251
+ get _animCtrlStore() {
252
+ if (!this._animationControllers)
253
+ this._animationControllers = this._loadAnimationControllers();
254
+ return this._animationControllers;
255
+ }
256
+ // ── Render Controllers ────────────────────────────────────────────────────
257
+ /** Returns the render controller with the given full ID, or null if not found. */
258
+ getRenderController(id) {
259
+ return this._renderCtrlStore.get(id) ?? null;
260
+ }
261
+ /** Returns all render controllers from the resource pack's `render_controllers/` directory. */
262
+ getAllRenderControllers() { return [...this._renderCtrlStore.values()]; }
263
+ get _renderCtrlStore() {
264
+ if (!this._renderControllers)
265
+ this._renderControllers = this._loadRenderControllers();
266
+ return this._renderControllers;
267
+ }
268
+ // ── Particles ─────────────────────────────────────────────────────────────
269
+ /** Returns the particle effect with the given namespaced identifier, or null if not found. */
270
+ getParticle(identifier) {
271
+ return this._particleStore.get(identifier) ?? null;
272
+ }
273
+ /** Returns all particle effects loaded from the resource pack's `particles/` directory. */
274
+ getAllParticles() { return [...this._particleStore.values()]; }
275
+ get _particleStore() {
276
+ if (!this._particles)
277
+ this._particles = this._loadParticles();
278
+ return this._particles;
279
+ }
280
+ // ── Attachables ───────────────────────────────────────────────────────────
281
+ /** Returns the attachable for the given item identifier, or null if none exists. */
282
+ getAttachable(identifier) {
283
+ return this._attachableStore.get(identifier) ?? null;
284
+ }
285
+ /** Returns all attachables loaded from the resource pack's `attachables/` directory. */
286
+ getAllAttachables() { return [...this._attachableStore.values()]; }
287
+ get _attachableStore() {
288
+ if (!this._attachables)
289
+ this._attachables = this._loadAttachables();
290
+ return this._attachables;
291
+ }
292
+ // ── Trading Tables ────────────────────────────────────────────────────────
293
+ /** Returns the trading table with the given name (filename without extension), or null. */
294
+ getTradingTable(name) {
295
+ return this._tradingStore.get(name) ?? null;
296
+ }
297
+ /** Returns all trading tables loaded from the behavior pack's `trading/` directory. */
298
+ getAllTradingTables() { return [...this._tradingStore.values()]; }
299
+ get _tradingStore() {
300
+ if (!this._tradingTables)
301
+ this._tradingTables = this._loadTradingTables();
302
+ return this._tradingTables;
303
+ }
304
+ // ── Sound convenience lookups ─────────────────────────────────────────────
305
+ /** Returns the sound definition with the given event ID, or null if not found. */
306
+ getSoundDefinition(id) {
307
+ return this.soundDefinitions.get(id) ?? null;
308
+ }
309
+ /** Returns the music definition for the given context key, or null if not found. */
310
+ getMusicDefinition(id) {
311
+ return this.musicDefinitions.get(id) ?? null;
312
+ }
313
+ /** Returns the sound events for the given entity shortname, or an empty array. */
314
+ getEntitySoundEvents(shortname) {
315
+ return this.entitySoundEvents.get(shortname) ?? [];
316
+ }
317
+ /** Returns the sound events for the given block shortname, or an empty array. */
318
+ getBlockSoundEvents(shortname) {
319
+ return this.blockSoundEvents.get(shortname) ?? [];
320
+ }
321
+ // ── Loaders ──────────────────────────────────────────────────────────────
322
+ _loadItems() {
323
+ const map = new Map();
324
+ for (const { filePath, data } of this._bpEntries("items")) {
325
+ const id = extractIdentifier(data, "minecraft:item");
326
+ if (!id)
327
+ continue;
328
+ map.set(id, new Item(id, data, filePath, this));
329
+ }
330
+ return map;
331
+ }
332
+ _loadBlocks() {
333
+ const map = new Map();
334
+ for (const { filePath, data } of this._bpEntries("blocks")) {
335
+ const id = extractIdentifier(data, "minecraft:block");
336
+ if (!id)
337
+ continue;
338
+ map.set(id, new Block(id, data, filePath, this));
339
+ }
340
+ return map;
341
+ }
342
+ _loadEntities() {
343
+ const behaviorMap = new Map();
344
+ for (const { filePath, data } of this._bpEntries("entities")) {
345
+ const id = extractIdentifier(data, "minecraft:entity") ??
346
+ extractIdentifier(data, "minecraft:npc");
347
+ if (!id)
348
+ continue;
349
+ behaviorMap.set(id, { data, filePath });
350
+ }
351
+ const resourceMap = new Map();
352
+ for (const { filePath, data } of this._rpEntries("entity")) {
353
+ const inner = data["minecraft:client_entity"];
354
+ const desc = inner?.["description"];
355
+ const id = desc?.["identifier"];
356
+ if (!id)
357
+ continue;
358
+ resourceMap.set(id, { data, filePath });
359
+ }
360
+ const map = new Map();
361
+ for (const [id, bp] of behaviorMap) {
362
+ const rp = resourceMap.get(id);
363
+ map.set(id, new Entity(id, bp.data, bp.filePath, rp?.data ?? null, rp?.filePath ?? null, this));
364
+ }
365
+ for (const [id, rp] of resourceMap) {
366
+ if (!behaviorMap.has(id))
367
+ map.set(id, new Entity(id, {}, "", rp.data, rp.filePath, this));
368
+ }
369
+ return map;
370
+ }
371
+ _loadRecipes() {
372
+ return this._bpEntries("recipes").map(({ data }) => new Recipe(data, this));
373
+ }
374
+ _loadLootTables() {
375
+ const map = new Map();
376
+ for (const { filePath, relativePath, data } of this._bpEntries("loot_tables")) {
377
+ const key = relativePath.replace(/\\/g, "/");
378
+ map.set(key, new LootTable(data, filePath, key));
379
+ }
380
+ return map;
381
+ }
382
+ _loadSpawnRules() {
383
+ const map = new Map();
384
+ for (const { filePath, data } of this._bpEntries("spawn_rules")) {
385
+ const inner = data["minecraft:spawn_rules"];
386
+ const desc = inner?.["description"];
387
+ const id = desc?.["identifier"];
388
+ if (!id)
389
+ continue;
390
+ map.set(id, new SpawnRule(id, data, filePath));
391
+ }
392
+ return map;
393
+ }
394
+ _loadBiomes() {
395
+ const map = new Map();
396
+ for (const { filePath, data } of this._bpEntries("biomes")) {
397
+ const id = extractIdentifier(data, "minecraft:biome");
398
+ if (!id)
399
+ continue;
400
+ map.set(id, new Biome(id, data, filePath, this));
401
+ }
402
+ return map;
403
+ }
404
+ _loadAnimations() {
405
+ const map = new Map();
406
+ for (const { filePath, data } of this._rpEntries("animations")) {
407
+ const animMap = data["animations"];
408
+ if (!animMap)
409
+ continue;
410
+ for (const [id, animData] of Object.entries(animMap))
411
+ map.set(id, new Animation(id, animData, filePath));
412
+ }
413
+ return map;
414
+ }
415
+ _loadAnimationControllers() {
416
+ const map = new Map();
417
+ for (const { filePath, data } of this._rpEntries("animation_controllers")) {
418
+ const ctrlMap = data["animation_controllers"];
419
+ if (!ctrlMap)
420
+ continue;
421
+ for (const [id, ctrlData] of Object.entries(ctrlMap))
422
+ map.set(id, new AnimationController(id, ctrlData, filePath));
423
+ }
424
+ return map;
425
+ }
426
+ _loadRenderControllers() {
427
+ const map = new Map();
428
+ for (const { filePath, data } of this._rpEntries("render_controllers")) {
429
+ const rcMap = data["render_controllers"];
430
+ if (!rcMap)
431
+ continue;
432
+ for (const [id, rcData] of Object.entries(rcMap))
433
+ map.set(id, new RenderController(id, rcData, filePath));
434
+ }
435
+ return map;
436
+ }
437
+ _loadParticles() {
438
+ const map = new Map();
439
+ for (const { filePath, data } of this._rpEntries("particles")) {
440
+ const inner = data["particle_effect"];
441
+ const desc = inner?.["description"];
442
+ const id = desc?.["identifier"];
443
+ if (!id)
444
+ continue;
445
+ map.set(id, new Particle(id, data, filePath));
446
+ }
447
+ return map;
448
+ }
449
+ _loadAttachables() {
450
+ const map = new Map();
451
+ for (const { filePath, data } of this._rpEntries("attachables")) {
452
+ const id = extractIdentifier(data, "minecraft:attachable");
453
+ if (!id)
454
+ continue;
455
+ map.set(id, new Attachable(id, data, filePath));
456
+ }
457
+ return map;
458
+ }
459
+ _loadTradingTables() {
460
+ const map = new Map();
461
+ for (const { filePath, relativePath, data } of this._bpEntries("trading")) {
462
+ const name = posix.basename(relativePath, ".json");
463
+ map.set(name, new TradingTable(data, filePath, name));
464
+ }
465
+ return map;
466
+ }
467
+ _loadSoundDefinitions() {
468
+ const map = new Map();
469
+ const data = this._isBrowser
470
+ ? this._rpData?.get("sounds/sound_definitions.json")
471
+ : readJSONFromDisk(join(this.resourcePackPath, "sounds", "sound_definitions.json"));
472
+ if (!data)
473
+ return map;
474
+ const defs = data["sound_definitions"];
475
+ if (!defs)
476
+ return map;
477
+ for (const [id, entry] of Object.entries(defs))
478
+ map.set(id, new SoundDefinition(id, entry));
479
+ return map;
480
+ }
481
+ _loadMusicDefinitions() {
482
+ const map = new Map();
483
+ const data = this._isBrowser
484
+ ? this._rpData?.get("sounds/music_definitions.json")
485
+ : readJSONFromDisk(join(this.resourcePackPath, "sounds", "music_definitions.json"));
486
+ if (!data)
487
+ return map;
488
+ for (const [id, entry] of Object.entries(data))
489
+ map.set(id, new MusicDefinition(id, entry));
490
+ return map;
491
+ }
492
+ _loadEntitySoundEvents() {
493
+ const map = new Map();
494
+ const data = this._isBrowser
495
+ ? (this._rpData?.get("sounds.json") ?? this._rpData?.get("sounds/sounds.json"))
496
+ : (readJSONFromDisk(join(this.resourcePackPath, "sounds.json")) ?? readJSONFromDisk(join(this.resourcePackPath, "sounds", "sounds.json")));
497
+ if (!data)
498
+ return map;
499
+ const entitySounds = data["entity_sounds"];
500
+ const entities = entitySounds?.["entities"];
501
+ if (!entities)
502
+ return map;
503
+ for (const [sn, entry] of Object.entries(entities)) {
504
+ const e = entry;
505
+ const events = e["events"];
506
+ if (!events)
507
+ continue;
508
+ map.set(sn, this._parseSoundEventMap(events));
509
+ }
510
+ return map;
511
+ }
512
+ _loadBlockSoundEvents() {
513
+ const map = new Map();
514
+ const data = this._isBrowser
515
+ ? (this._rpData?.get("sounds.json") ?? this._rpData?.get("sounds/sounds.json"))
516
+ : (readJSONFromDisk(join(this.resourcePackPath, "sounds.json")) ?? readJSONFromDisk(join(this.resourcePackPath, "sounds", "sounds.json")));
517
+ if (!data)
518
+ return map;
519
+ const blockSounds = data["block_sounds"];
520
+ if (!blockSounds)
521
+ return map;
522
+ for (const [sn, entry] of Object.entries(blockSounds)) {
523
+ const e = entry;
524
+ const events = e["events"];
525
+ if (!events)
526
+ continue;
527
+ map.set(sn, this._parseSoundEventMap(events));
528
+ }
529
+ return map;
530
+ }
531
+ _parseSoundEventMap(events) {
532
+ const result = [];
533
+ for (const [event, value] of Object.entries(events)) {
534
+ if (typeof value === "string") {
535
+ result.push({
536
+ event,
537
+ definitionId: value,
538
+ definition: value ? this.getSoundDefinition(value) : null,
539
+ volume: null,
540
+ pitch: null,
541
+ });
542
+ }
543
+ else if (typeof value === "object" && value !== null) {
544
+ const v = value;
545
+ const defId = v["sound"] ?? v["sounds"] ?? "";
546
+ result.push({
547
+ event,
548
+ definitionId: defId,
549
+ definition: defId ? this.getSoundDefinition(defId) : null,
550
+ volume: typeof v["volume"] === "number" ? v["volume"] : null,
551
+ pitch: Array.isArray(v["pitch"])
552
+ ? v["pitch"]
553
+ : typeof v["pitch"] === "number"
554
+ ? v["pitch"]
555
+ : null,
556
+ });
557
+ }
558
+ }
559
+ return result;
560
+ }
561
+ }
562
+ //# sourceMappingURL=addon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addon.js","sourceRoot":"","sources":["../../src/internal/addon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Represents a single animation definition loaded from a resource pack animation file.
3
+ * Multiple animations are defined per file; each is keyed by its full ID.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * const anim = addon.getAnimation("animation.humanoid.move");
8
+ * console.log(anim?.loop); // true
9
+ * ```
10
+ */
11
+ export declare class Animation {
12
+ /** The full animation ID, e.g. `"animation.humanoid.move"`. */
13
+ readonly id: string;
14
+ /** The raw data for this animation definition. */
15
+ readonly data: Record<string, unknown>;
16
+ /**
17
+ * Absolute path to the file this animation was loaded from.
18
+ * Empty string when loaded from browser `File[]`.
19
+ */
20
+ readonly filePath: string;
21
+ constructor(id: string, data: Record<string, unknown>, filePath: string);
22
+ /** Whether this animation loops. Reads the `loop` property from the animation data. */
23
+ get loop(): boolean;
24
+ }
25
+ /**
26
+ * Represents a single animation controller loaded from a resource pack
27
+ * `animation_controllers/` file. Animation controllers manage transitions
28
+ * between animation states for an entity.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const ctrl = addon.getAnimationController("controller.animation.zombie.move");
33
+ * console.log(ctrl?.initialState); // "default"
34
+ * console.log(ctrl?.states); // ["default", "attacking"]
35
+ * ```
36
+ */
37
+ export declare class AnimationController {
38
+ /** The full controller ID, e.g. `"controller.animation.zombie.move"`. */
39
+ readonly id: string;
40
+ /** The raw data for this controller definition. */
41
+ readonly data: Record<string, unknown>;
42
+ /**
43
+ * Absolute path to the file this controller was loaded from.
44
+ * Empty string when loaded from browser `File[]`.
45
+ */
46
+ readonly filePath: string;
47
+ constructor(id: string, data: Record<string, unknown>, filePath: string);
48
+ /** The names of all states defined in this controller. */
49
+ get states(): string[];
50
+ /** The name of the initial state this controller starts in. Null if not specified. */
51
+ get initialState(): string | null;
52
+ }
53
+ //# sourceMappingURL=animation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../src/internal/animation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,SAAS;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM;IAMvE,uFAAuF;IACvF,IAAI,IAAI,IAAI,OAAO,CAAuC;CAC3D;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAmB;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM;IAMvE,0DAA0D;IAC1D,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAED,sFAAsF;IACtF,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;CACF"}