@adeficior/data-modifier-loot 2.0.2 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/emitter.d.ts CHANGED
@@ -1,41 +1,34 @@
1
- import type { ClearableEmitter, IdInput, LoaderContext, NormalizedId, RegistryLookup, RegistryProvider, SemVerInput } from "@adeficior/data-modifier-core";
2
- import type { CommonFilter } from "@adeficior/data-modifier-core/serializer";
1
+ import type { IdInput, LoaderContext, RegistryLookup, SemVerInput } from "@adeficior/data-modifier-core";
2
+ import { SimpleEmitter } from "@adeficior/data-modifier-core";
3
3
  import type { IngredientFilter, Predicates } from "@adeficior/data-modifier-ingredients";
4
+ import type { Logger } from "@adeficior/pack-resolver";
5
+ import type { LootTableRegistry } from "./registry";
6
+ import type { LootTableFilter, LootTableRules } from "./rule";
4
7
  import type { LootItemInput, LootModifier, LootTable } from "./schema";
5
8
  export declare const EMPTY_LOOT_TABLE: LootTable;
6
9
  export declare const EMPTY_LOOT_MODIFIER: LootModifier;
7
- type LootTableTest = Readonly<{
8
- id?: CommonFilter<NormalizedId>;
9
- output?: IngredientFilter;
10
- }>;
11
10
  export type LootEmitter = {
12
- replaceOutput(from: IngredientFilter, to: LootItemInput, additionalTests?: LootTableTest): void;
13
- removeOutput(from: IngredientFilter, additionalTests?: LootTableTest): void;
11
+ replaceOutput(from: IngredientFilter, to: LootItemInput, additionalFilters?: LootTableFilter): void;
12
+ removeOutput(from: IngredientFilter, additionalFilters?: LootTableFilter): void;
14
13
  add(id: IdInput, value: LootTable): void;
15
- disable(test: LootTableTest): void;
14
+ disable(filter: LootTableFilter): void;
16
15
  block(id: IdInput): void;
17
16
  addModifier<T extends LootModifier>(id: IdInput, value: T): void;
18
17
  disabledModifier(id: IdInput): void;
19
18
  };
20
- export declare class LootEmitterImpl implements LootEmitter, ClearableEmitter {
21
- private readonly packFormat;
22
- private readonly lootTables;
19
+ export declare class LootEmitterImpl extends SimpleEmitter<LootTable, LootTable> implements LootEmitter {
23
20
  private readonly lookup;
24
21
  private readonly predicates;
25
- private readonly customTables;
22
+ private readonly rules;
26
23
  private readonly customModifiers;
27
- private readonly ruled;
28
- constructor(packFormat: SemVerInput, lootTables: RegistryProvider<LootTable>, lookup: RegistryLookup, predicates: Predicates);
24
+ constructor(packFormat: SemVerInput, registry: LootTableRegistry, logger: Logger, lookup: RegistryLookup, predicates: Predicates, rules: LootTableRules);
29
25
  resolver(context: LoaderContext): import("@adeficior/pack-resolver").Resolver<import("@adeficior/pack-resolver").Acceptable, import("@adeficior/pack-resolver").BaseContext>;
30
- private modifierPath;
31
26
  clear(): void;
32
- private resolveLootTableTest;
33
27
  add(id: IdInput, value: LootTable): void;
34
- disable(test: LootTableTest): void;
35
- replaceOutput(from: IngredientFilter, to: LootItemInput, additionalTests?: LootTableTest): void;
36
- removeOutput(from: IngredientFilter, additionalTests?: LootTableTest): void;
28
+ disable(filter: LootTableFilter): void;
29
+ replaceOutput(from: IngredientFilter, to: LootItemInput, additionalFilters?: LootTableFilter): void;
30
+ removeOutput(from: IngredientFilter, additionalFilters?: LootTableFilter): void;
37
31
  block(id: IdInput): void;
38
32
  disabledModifier(id: IdInput): void;
39
33
  addModifier<T extends LootModifier>(id: IdInput, value: T): void;
40
34
  }
41
- export {};
package/dist/emitter.js CHANGED
@@ -1,7 +1,6 @@
1
- import { CustomEmitter, encodeId, prefix, RuledEmitter, } from "@adeficior/data-modifier-core";
1
+ import { CustomEmitter, encodeId, prefix, SimpleEmitter, } from "@adeficior/data-modifier-core";
2
2
  import { combineResolvers } from "@adeficior/pack-resolver";
3
3
  import { lootTablePath } from "./helper";
4
- import { LootTableRule } from "./rule";
5
4
  import { EmptyLootEntry, LootTableSchema } from "./schema";
6
5
  import { createLootEntry, replaceItemInTable } from "./serializer";
7
6
  export const EMPTY_LOOT_TABLE = {
@@ -11,64 +10,36 @@ export const EMPTY_LOOT_TABLE = {
11
10
  export const EMPTY_LOOT_MODIFIER = {
12
11
  type: "noop",
13
12
  };
14
- export class LootEmitterImpl {
15
- packFormat;
16
- lootTables;
13
+ export class LootEmitterImpl extends SimpleEmitter {
17
14
  lookup;
18
15
  predicates;
19
- customTables = new CustomEmitter((it) => lootTablePath(this.packFormat, it));
20
- customModifiers = new CustomEmitter((it) => this.modifierPath(it));
21
- ruled;
22
- constructor(
23
- // TODO inject
24
- packFormat, lootTables, lookup, predicates) {
25
- this.packFormat = packFormat;
26
- this.lootTables = lootTables;
16
+ rules;
17
+ customModifiers = new CustomEmitter((id) => `data/${id.namespace}/loot_modifiers/${id.path}.json`);
18
+ constructor(packFormat, registry, logger, lookup, predicates, rules) {
19
+ super("loot tables", registry, logger, (it) => lootTablePath(packFormat, it), EMPTY_LOOT_TABLE);
27
20
  this.lookup = lookup;
28
21
  this.predicates = predicates;
29
- this.ruled = new RuledEmitter(this.lootTables, (id) => lootTablePath(packFormat, id), EMPTY_LOOT_TABLE,
30
- // TODO also add value object here?
31
- (it) => it, (id) => this.customTables.has(id));
22
+ this.rules = rules;
32
23
  }
33
24
  resolver(context) {
34
- return combineResolvers([
35
- this.ruled.resolver(context),
36
- this.customTables.resolver(context),
37
- this.customModifiers.resolver(context),
38
- ], { async: true });
39
- }
40
- modifierPath(id) {
41
- return `data/${id.namespace}/loot_modifiers/${id.path}.json`;
25
+ return combineResolvers([super.resolver(context), this.customModifiers.resolver(context)], { async: true });
42
26
  }
43
27
  clear() {
44
- this.customTables.clear();
28
+ super.clear();
45
29
  this.customModifiers.clear();
46
- this.ruled.clear();
47
- }
48
- resolveLootTableTest(test) {
49
- const id = [];
50
- const output = [];
51
- if (test.id)
52
- id.push(this.predicates.id(test.id, "minecraft:item"));
53
- if (test.output)
54
- output.push(this.predicates.ingredient(test.output));
55
- return { id, output };
56
30
  }
57
31
  add(id, value) {
58
- this.customTables.add(id, LootTableSchema.parse(value));
32
+ this.addCustom(id, LootTableSchema.parse(value));
59
33
  }
60
- disable(test) {
61
- const predicates = this.resolveLootTableTest(test);
62
- this.ruled.addRule(new LootTableRule({ operation: "remove", test }, predicates.id, predicates.output, () => null));
34
+ disable(filter) {
35
+ this.ruled.addRemoval(this.rules.resolve(filter), { filter });
63
36
  }
64
- replaceOutput(from, to, additionalTests = {}) {
65
- const predicates = this.resolveLootTableTest(additionalTests);
66
- const outputPredicate = this.predicates.ingredient(from);
67
- const replacer = replaceItemInTable(outputPredicate, createLootEntry(to, this.lookup));
68
- this.ruled.addRule(new LootTableRule({ operation: "replace output", from, to, test: additionalTests }, predicates.id, [outputPredicate, ...predicates.output], replacer));
37
+ replaceOutput(from, to, additionalFilters = {}) {
38
+ const modifier = replaceItemInTable(this.predicates.ingredient(from), createLootEntry(to, this.lookup));
39
+ this.ruled.addRule(this.rules.resolve(additionalFilters, { output: from }), modifier, { operation: "replace output", from, to, filter: additionalFilters });
69
40
  }
70
- removeOutput(from, additionalTests) {
71
- this.replaceOutput(from, EmptyLootEntry, additionalTests);
41
+ removeOutput(from, additionalFilters) {
42
+ this.replaceOutput(from, EmptyLootEntry, additionalFilters);
72
43
  }
73
44
  block(id) {
74
45
  this.add(prefix(id, "blocks/"), {
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"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"}
package/dist/helper.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- import type { IdInput, SemVerInput } from "@adeficior/data-modifier-core";
1
+ import type { IdInput, ResourceFolder, SemVerInput } from "@adeficior/data-modifier-core";
2
+ export declare function lootTableFolder(packFormat: SemVerInput): ResourceFolder;
2
3
  export declare function lootTablePath(packFormat: SemVerInput, id: IdInput): string;
3
4
  export declare function lootTablePattern(packFormat: SemVerInput): string;
package/dist/helper.js CHANGED
@@ -1,13 +1,14 @@
1
- import { createId, isAtLeastVersion, jsonFilePattern, } from "@adeficior/data-modifier-core";
2
- function lootTableFolder(packFormat) {
3
- return isAtLeastVersion(packFormat, "44") ? "loot_table" : "loot_tables";
1
+ import { isAtLeastVersion, jsonFilePath, jsonFilePattern, } from "@adeficior/data-modifier-core";
2
+ export function lootTableFolder(packFormat) {
3
+ const folder = isAtLeastVersion(packFormat, "44")
4
+ ? "loot_table"
5
+ : "loot_tables";
6
+ return { packType: "data", folder };
4
7
  }
5
8
  export function lootTablePath(packFormat, id) {
6
- const folder = lootTableFolder(packFormat);
7
- const { namespace, path } = createId(id);
8
- return `data/${namespace}/${folder}/${path}.json`;
9
+ return jsonFilePath(lootTableFolder(packFormat), id);
9
10
  }
10
11
  export function lootTablePattern(packFormat) {
11
- return jsonFilePattern("data", lootTableFolder(packFormat));
12
+ return jsonFilePattern(lootTableFolder(packFormat));
12
13
  }
13
14
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAGvC,SAAS,eAAe,CAAC,UAAuB;IAC9C,OAAO,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAuB,EAAE,EAAW;IAChE,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,QAAQ,SAAS,IAAI,MAAM,IAAI,IAAI,OAAO,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAuB;IACtD,OAAO,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,UAAU,eAAe,CAAC,UAAuB;IACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC;QAC/C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,aAAa,CAAC;IAClB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAuB,EAAE,EAAW;IAChE,OAAO,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAuB;IACtD,OAAO,eAAe,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACtD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,4 +2,6 @@ export { EMPTY_LOOT_MODIFIER, EMPTY_LOOT_TABLE, type LootEmitter, } from "./emit
2
2
  export type * from "./helper";
3
3
  export type * from "./loader";
4
4
  export { default } from "./module";
5
+ export type * from "./registry";
6
+ export type { LootTableFilter, LootTableRules } from "./rule";
5
7
  export type { EmptyLootEntry, LootEntry, LootEntryBase, LootItemInput, LootModifier, LootPool, LootTable, } from "./schema";
package/dist/module.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { LootEmitter } from "./emitter";
2
2
  import { LootTableLoader } from "./loader";
3
+ import type { LootTableRegistry } from "./registry";
4
+ import type { LootTableRules } from "./rule";
3
5
  declare const _default: import("@adeficior/data-modifier-core").ModuleConfig<{
4
6
  loaders: {
5
7
  loot: LootTableLoader;
@@ -7,5 +9,9 @@ declare const _default: import("@adeficior/data-modifier-core").ModuleConfig<{
7
9
  emitters: {
8
10
  loot: LootEmitter;
9
11
  };
12
+ services: {
13
+ "rules:loot": LootTableRules;
14
+ "registry:loot": LootTableRegistry;
15
+ };
10
16
  }>;
11
17
  export default _default;
package/dist/module.js CHANGED
@@ -1,11 +1,13 @@
1
- import { defineModule } from "@adeficior/data-modifier-core";
1
+ import { defineModule, PatchedRegistry } from "@adeficior/data-modifier-core";
2
2
  import { name } from "../package.json";
3
3
  import { LootEmitterImpl } from "./emitter";
4
- import { lootTablePattern } from "./helper";
4
+ import { lootTableFolder, lootTablePattern } from "./helper";
5
5
  import { LootTableLoader } from "./loader";
6
+ import { LootTableRulesImpl } from "./rule";
6
7
  export default defineModule({
7
8
  importModule: name,
8
9
  dependencies: {
10
+ "@adeficior/data-modifier-ingredients": "required",
9
11
  // TODO make optional?
10
12
  "@adeficior/data-modifier-tags": "required",
11
13
  },
@@ -16,11 +18,17 @@ export default defineModule({
16
18
  emitters: {
17
19
  loot: "LootEmitter",
18
20
  },
21
+ services: {
22
+ "rules:loot": "LootTableRules",
23
+ "registry:loot": "LootTableRegistry",
24
+ },
19
25
  },
20
26
  promote: [{ key: "loot", service: "emitter:loot" }],
21
- setup(pack) {
22
- const loader = pack.loader("loot", () => new LootTableLoader(), lootTablePattern(pack.options.packFormat));
23
- pack.emitter("loot", (container) => new LootEmitterImpl(pack.options.packFormat, loader(), container.get("registries"), container.get("predicates")));
27
+ setup(instance) {
28
+ const loader = instance.loader("loot", () => new LootTableLoader(lootTableFolder(instance.options.packFormat)), lootTablePattern(instance.options.packFormat));
29
+ const rules = instance.service("rules:loot", (container) => new LootTableRulesImpl(container.get("predicates")));
30
+ const registry = instance.service("registry:loot", () => new PatchedRegistry(loader()));
31
+ instance.emitter("loot", (container) => new LootEmitterImpl(instance.options.packFormat, registry(), container.get("logger"), container.get("registries"), container.get("predicates"), rules()));
24
32
  },
25
33
  });
26
34
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAe,YAAY,CAOxB;IACD,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE;QACZ,sBAAsB;QACtB,+BAA+B,EAAE,UAAU;KAC5C;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,IAAI,EAAE,iBAAiB;SACxB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,aAAa;SACpB;KACF;IACD,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACnD,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB,MAAM,EACN,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE,EAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAC1C,CAAC;QAEF,IAAI,CAAC,OAAO,CACV,MAAM,EACN,CAAC,SAAS,EAAE,EAAE,CACZ,IAAI,eAAe,CACjB,IAAI,CAAC,OAAO,CAAC,UAAU,EACvB,MAAM,EAAE,EACR,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAC3B,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAC5B,CACJ,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,eAAe,YAAY,CAWxB;IACD,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE;QACZ,sCAAsC,EAAE,UAAU;QAClD,sBAAsB;QACtB,+BAA+B,EAAE,UAAU;KAC5C;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,IAAI,EAAE,iBAAiB;SACxB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,aAAa;SACpB;QACD,QAAQ,EAAE;YACR,YAAY,EAAE,gBAAgB;YAC9B,eAAe,EAAE,mBAAmB;SACrC;KACF;IACD,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACnD,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAC5B,MAAM,EACN,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EACvE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAC9C,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAC5B,YAAY,EACZ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CACnE,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAC/B,eAAe,EACf,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC,CACpC,CAAC;QAEF,QAAQ,CAAC,OAAO,CACd,MAAM,EACN,CAAC,SAAS,EAAE,EAAE,CACZ,IAAI,eAAe,CACjB,QAAQ,CAAC,OAAO,CAAC,UAAU,EAC3B,QAAQ,EAAE,EACV,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EACvB,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAC3B,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,CACR,CACJ,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Registry } from "@adeficior/data-modifier-core";
2
+ import type { LootTable } from "./schema";
3
+ export type LootTableRegistry = Registry<LootTable>;
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":""}
package/dist/rule.d.ts CHANGED
@@ -1,14 +1,29 @@
1
- import { Rule } from "@adeficior/data-modifier-core";
2
- import type { Id, Modifier } from "@adeficior/data-modifier-core";
3
- import type { Predicate } from "@adeficior/data-modifier-core/serializer";
4
- import type { Ingredient } from "@adeficior/data-modifier-ingredients";
5
- import type { ContextLike, Logger } from "@adeficior/pack-resolver";
6
- import type { LootTable } from "./schema";
7
- export declare class LootTableRule extends Rule<LootTable> {
8
- private readonly context;
9
- private readonly idTests;
10
- private readonly outputTests;
11
- constructor(context: ContextLike, idTests: Predicate<Id>[], outputTests: Predicate<Ingredient>[], modifier: Modifier<LootTable>);
12
- matches(id: Id, table: LootTable, logger: Logger): boolean;
13
- printWarning(logger: Logger): void;
1
+ import type { Id, NormalizedId, Rule } from "@adeficior/data-modifier-core";
2
+ import type { CommonFilter, Predicate } from "@adeficior/data-modifier-core/serializer";
3
+ import type { IngredientFilter, Predicates } from "@adeficior/data-modifier-ingredients";
4
+ import type { LootEntryBase, LootTable } from "./schema";
5
+ export type LootTableFilter = Readonly<{
6
+ id?: CommonFilter<NormalizedId>;
7
+ output?: IngredientFilter;
8
+ }>;
9
+ type SubjectFilters = Readonly<{
10
+ output?: IngredientFilter;
11
+ }>;
12
+ declare class LootTableRule implements Rule<LootTable> {
13
+ private readonly idFilter;
14
+ private readonly outputsFilter;
15
+ constructor(idFilter: Predicate<Id>, outputsFilter: Predicate<LootEntryBase[]>);
16
+ matches(id: Id, value: LootTable): boolean;
14
17
  }
18
+ export type LootTableRules = {
19
+ resolve(filter?: LootTableFilter, subjectFilters?: SubjectFilters): Rule<LootTable>;
20
+ };
21
+ export declare class LootTableRulesImpl implements LootTableRules {
22
+ private readonly predicates;
23
+ constructor(predicates: Predicates);
24
+ private resolveLootTableFilter;
25
+ private resolveSubjectFilters;
26
+ private toLootEntryPredicate;
27
+ resolve(filter?: LootTableFilter, subjectFilters?: SubjectFilters): LootTableRule;
28
+ }
29
+ export {};
package/dist/rule.js CHANGED
@@ -1,47 +1,65 @@
1
- import { Rule } from "@adeficior/data-modifier-core";
2
- import { IllegalShapeError, tryCatching, } from "@adeficior/data-modifier-core/serializer";
1
+ import { always, every, some } from "@adeficior/data-modifier-core/serializer";
3
2
  import { ItemIngredient, ItemTagIngredient, } from "@adeficior/data-modifier-ingredients";
3
+ import { notNull } from "@adeficior/pack-resolver";
4
4
  import { extendLootEntry } from "./schema";
5
- // TODO add function Predicate<Ingredient> -> Predicate<LootEntry>
6
- function entryMatches(test, base) {
5
+ function entryMatches(predicate, base) {
7
6
  try {
8
7
  const entry = extendLootEntry(base);
9
8
  switch (entry.type) {
10
9
  case "minecraft:alternatives":
11
- return entry.children.some((it) => entryMatches(test, it));
10
+ return entry.children.some((it) => entryMatches(predicate, it));
12
11
  case "minecraft:item":
13
- return test(new ItemIngredient(entry.name));
12
+ return predicate(new ItemIngredient(entry.name));
14
13
  case "minecraft:tag":
15
- return test(new ItemTagIngredient(entry.name));
14
+ return predicate(new ItemTagIngredient(entry.name));
16
15
  default:
17
16
  return false;
18
17
  }
19
18
  }
20
19
  catch {
21
- throw new IllegalShapeError(`unknown loot entry type:`, base);
20
+ return false;
22
21
  }
23
22
  }
24
- function hasOutput(logger, test, table) {
25
- return table.pools.some((pool) => pool.entries.some((entry) => {
26
- return tryCatching(logger, () => entryMatches(test, entry)) ?? false;
27
- }));
23
+ class LootTableRule {
24
+ idFilter;
25
+ outputsFilter;
26
+ constructor(idFilter, outputsFilter) {
27
+ this.idFilter = idFilter;
28
+ this.outputsFilter = outputsFilter;
29
+ }
30
+ matches(id, value) {
31
+ const outputs = value.pools.flatMap((it) => it.entries);
32
+ return this.idFilter(id) && this.outputsFilter(outputs);
33
+ }
28
34
  }
29
- export class LootTableRule extends Rule {
30
- context;
31
- idTests;
32
- outputTests;
33
- constructor(context, idTests, outputTests, modifier) {
34
- super(modifier);
35
- this.context = context;
36
- this.idTests = idTests;
37
- this.outputTests = outputTests;
38
- }
39
- matches(id, table, logger) {
40
- return (this.idTests.every((test) => test(id)) &&
41
- this.outputTests.every((test) => hasOutput(logger, test, table)));
42
- }
43
- printWarning(logger) {
44
- logger.trace("could not find any matching loot table", this.context);
35
+ export class LootTableRulesImpl {
36
+ predicates;
37
+ constructor(predicates) {
38
+ this.predicates = predicates;
39
+ }
40
+ resolveLootTableFilter(test) {
41
+ const id = [];
42
+ const output = [];
43
+ if (test.id)
44
+ id.push(this.predicates.id(test.id));
45
+ if (test.output)
46
+ output.push(this.predicates.ingredient(test.output));
47
+ return { id, output };
48
+ }
49
+ resolveSubjectFilters({ output }) {
50
+ return {
51
+ output: notNull(output) ? this.predicates.ingredient(output) : always(),
52
+ };
53
+ }
54
+ toLootEntryPredicate(predicate) {
55
+ return (base) => entryMatches(predicate, base);
56
+ }
57
+ resolve(filter = {}, subjectFilters = {}) {
58
+ const predicates = this.resolveLootTableFilter(filter);
59
+ const subjectPredicates = this.resolveSubjectFilters(subjectFilters);
60
+ return new LootTableRule(every(predicates.id), every([...predicates.output, subjectPredicates.output]
61
+ .map((it) => this.toLootEntryPredicate(it))
62
+ .map(some)));
45
63
  }
46
64
  }
47
65
  //# sourceMappingURL=rule.js.map
package/dist/rule.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rule.js","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,EACL,iBAAiB,EACjB,WAAW,GACZ,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,kEAAkE;AAElE,SAAS,YAAY,CACnB,IAA2B,EAC3B,IAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,wBAAwB;gBAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7D,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,MAAc,EACd,IAA2B,EAC3B,KAAgB;IAEhB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,OAAO,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;IACvE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,aAAc,SAAQ,IAAe;IAE7B;IACA;IACA;IAHnB,YACmB,OAAoB,EACpB,OAAwB,EACxB,WAAoC,EACrD,QAA6B;QAE7B,KAAK,CAAC,QAAQ,CAAC,CAAC;QALC,YAAO,GAAP,OAAO,CAAa;QACpB,YAAO,GAAP,OAAO,CAAiB;QACxB,gBAAW,GAAX,WAAW,CAAyB;IAIvD,CAAC;IAED,OAAO,CAAC,EAAM,EAAE,KAAgB,EAAE,MAAc;QAC9C,OAAO,CACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CACjE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;CACF"}
1
+ {"version":3,"file":"rule.js","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { RegistryLookup } from "@adeficior/data-modifier-core";
2
- import type { Predicate, Replacer } from "@adeficior/data-modifier-core/serializer";
1
+ import type { Modifier, RegistryLookup } from "@adeficior/data-modifier-core";
2
+ import type { Predicate } from "@adeficior/data-modifier-core/serializer";
3
3
  import type { Ingredient } from "@adeficior/data-modifier-ingredients";
4
4
  import type { LootEntry, LootItemInput, LootTable } from "./schema";
5
5
  export declare function createLootEntry(input: LootItemInput, lookup: RegistryLookup): LootEntry;
6
- export declare function replaceItemInTable(predicate: Predicate<Ingredient>, to: LootEntry): Replacer<LootTable>;
6
+ export declare function replaceItemInTable(predicate: Predicate<Ingredient>, to: LootEntry): Modifier<LootTable>;
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
+ export * from "./mocks";
1
2
  export * from "./setup";
@@ -1,2 +1,3 @@
1
+ export * from "./mocks";
1
2
  export * from "./setup";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function mockRules(): {
2
+ resolve: import("bun:test").Mock<(...args: any[]) => any>;
3
+ };
@@ -0,0 +1,7 @@
1
+ import { mock } from "bun:test";
2
+ export function mockRules() {
3
+ return {
4
+ resolve: mock(),
5
+ };
6
+ }
7
+ //# sourceMappingURL=mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../src/testing/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,OAAO,EAAE,IAAI,EAAE;KACS,CAAC;AAC7B,CAAC"}
@@ -5,10 +5,13 @@ import { createTestLogger } from "@adeficior/pack-resolver/testing";
5
5
  import { createTestDataResolver, setupLookup } from "@adeficior/testing";
6
6
  import { afterAll, afterEach, beforeAll } from "bun:test";
7
7
  import { LootEmitterImpl } from "../emitter";
8
- import { lootTablePattern } from "../helper";
8
+ import { lootTableFolder, lootTablePattern } from "../helper";
9
9
  import { LootTableLoader } from "../loader";
10
+ import { LootTableRulesImpl } from "../rule";
10
11
  export function setupLootLoader(version, { mods = [], ...resolverOptions } = {}) {
11
- const loader = new LootTableLoader({ mods: ["minecraft", ...mods] });
12
+ const loader = new LootTableLoader(lootTableFolder(packFormatOf(version)), {
13
+ mods: ["minecraft", ...mods],
14
+ });
12
15
  const logger = createTestLogger();
13
16
  beforeAll(async () => {
14
17
  const resolver = await createTestDataResolver(version, {
@@ -28,8 +31,9 @@ export function setupLootEmitter(version, options) {
28
31
  const { loader } = setupLootLoader(version, options);
29
32
  const tags = setupTagRegistry(version, options);
30
33
  const predicates = setupPredicates(lookup, tags, setupIngredientSerializer(version, lookup));
31
- const emitter = new LootEmitterImpl(packFormatOf(version), loader, lookup, predicates);
34
+ const rules = new LootTableRulesImpl(predicates);
32
35
  const logger = createTestLogger();
36
+ const emitter = new LootEmitterImpl(packFormatOf(version), loader, logger, lookup, predicates, rules);
33
37
  const resolver = emitter.resolver({ logger });
34
38
  afterEach(() => {
35
39
  emitter.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,yBAAyB,EACzB,eAAe,GAChB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAM5C,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,eAAe,KAA4B,EAAE;IAE7D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE;YACrD,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM;YACN,GAAG,eAAe;SACnB,CAAC,CAAC;QACH,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,OAA+B;IAE/B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,EACN,IAAI,EACJ,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAC3C,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,eAAe,CACjC,YAAY,CAAC,OAAO,CAAC,EACrB,MAAM,EACN,MAAM,EACN,UAAU,CACX,CAAC;IAEF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,yBAAyB,EACzB,eAAe,GAChB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAM7C,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,eAAe,KAA4B,EAAE;IAE7D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;QACzE,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;KAC7B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE;YACrD,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM;YACN,GAAG,eAAe;SACnB,CAAC,CAAC;QACH,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,OAA+B;IAE/B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,EACN,IAAI,EACJ,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAC3C,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,MAAM,OAAO,GAAG,IAAI,eAAe,CACjC,YAAY,CAAC,OAAO,CAAC,EACrB,MAAM,EACN,MAAM,EACN,MAAM,EACN,UAAU,EACV,KAAK,CACN,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@adeficior/data-modifier-loot",
3
3
  "description": "data-modifier module for loot",
4
- "version": "2.0.2",
4
+ "version": "2.1.1",
5
5
  "exports": { ".": "./dist/index.js", "./testing": "./dist/testing/index.js" },
6
6
  "type": "module",
7
- "devDependencies": { "@adeficior/data-modifier-ingredients": "^2.0.2" },
7
+ "devDependencies": { "@adeficior/data-modifier-ingredients": "^2.0.4" },
8
8
  "peerDependencies": {
9
9
  "@adeficior/pack-resolver": "^2.0.1",
10
10
  "typescript": "^5",
11
11
  "zod": "^4.4.3",
12
- "@adeficior/data-modifier-core": "^2.0.2",
13
- "@adeficior/data-modifier-ingredients": "^2.0.2",
14
- "@adeficior/data-modifier-tags": "^2.0.2"
12
+ "@adeficior/data-modifier-core": "^2.2.0",
13
+ "@adeficior/data-modifier-ingredients": "^2.0.4",
14
+ "@adeficior/data-modifier-tags": "^2.0.4"
15
15
  },
16
16
  "typesVersions": { "*": { "./testing": ["./dist/testing/index.d.ts"] } },
17
17
  "types": "./dist/index.d.ts",