@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 +14 -21
- package/dist/emitter.js +17 -46
- package/dist/emitter.js.map +1 -1
- package/dist/helper.d.ts +2 -1
- package/dist/helper.js +8 -7
- package/dist/helper.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/module.d.ts +6 -0
- package/dist/module.js +13 -5
- package/dist/module.js.map +1 -1
- package/dist/registry.d.ts +3 -0
- package/dist/registry.js +1 -0
- package/dist/registry.js.map +1 -0
- package/dist/rule.d.ts +28 -13
- package/dist/rule.js +46 -28
- package/dist/rule.js.map +1 -1
- package/dist/serializer.d.ts +3 -3
- package/dist/serializer.js.map +1 -1
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.js +1 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mocks.d.ts +3 -0
- package/dist/testing/mocks.js +7 -0
- package/dist/testing/mocks.js.map +1 -0
- package/dist/testing/setup.js +7 -3
- package/dist/testing/setup.js.map +1 -1
- package/package.json +5 -5
package/dist/emitter.d.ts
CHANGED
|
@@ -1,41 +1,34 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
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,
|
|
13
|
-
removeOutput(from: IngredientFilter,
|
|
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(
|
|
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
|
|
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
|
|
22
|
+
private readonly rules;
|
|
26
23
|
private readonly customModifiers;
|
|
27
|
-
|
|
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(
|
|
35
|
-
replaceOutput(from: IngredientFilter, to: LootItemInput,
|
|
36
|
-
removeOutput(from: IngredientFilter,
|
|
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,
|
|
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
|
-
|
|
20
|
-
customModifiers = new CustomEmitter((
|
|
21
|
-
|
|
22
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
32
|
+
this.addCustom(id, LootTableSchema.parse(value));
|
|
59
33
|
}
|
|
60
|
-
disable(
|
|
61
|
-
|
|
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,
|
|
65
|
-
const
|
|
66
|
-
|
|
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,
|
|
71
|
-
this.replaceOutput(from, EmptyLootEntry,
|
|
41
|
+
removeOutput(from, additionalFilters) {
|
|
42
|
+
this.replaceOutput(from, EmptyLootEntry, additionalFilters);
|
|
72
43
|
}
|
|
73
44
|
block(id) {
|
|
74
45
|
this.add(prefix(id, "blocks/"), {
|
package/dist/emitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"
|
|
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 {
|
|
2
|
-
function lootTableFolder(packFormat) {
|
|
3
|
-
|
|
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
|
-
|
|
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(
|
|
12
|
+
return jsonFilePattern(lootTableFolder(packFormat));
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=helper.js.map
|
package/dist/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"
|
|
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(
|
|
22
|
-
const loader =
|
|
23
|
-
|
|
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
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,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"}
|
package/dist/registry.js
ADDED
|
@@ -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 {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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 {
|
|
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
|
-
|
|
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(
|
|
10
|
+
return entry.children.some((it) => entryMatches(predicate, it));
|
|
12
11
|
case "minecraft:item":
|
|
13
|
-
return
|
|
12
|
+
return predicate(new ItemIngredient(entry.name));
|
|
14
13
|
case "minecraft:tag":
|
|
15
|
-
return
|
|
14
|
+
return predicate(new ItemTagIngredient(entry.name));
|
|
16
15
|
default:
|
|
17
16
|
return false;
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
19
|
catch {
|
|
21
|
-
|
|
20
|
+
return false;
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"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"}
|
package/dist/serializer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RegistryLookup } from "@adeficior/data-modifier-core";
|
|
2
|
-
import type { Predicate
|
|
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):
|
|
6
|
+
export declare function replaceItemInTable(predicate: Predicate<Ingredient>, to: LootEntry): Modifier<LootTable>;
|
package/dist/serializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/index.d.ts
CHANGED
package/dist/testing/index.js
CHANGED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/testing/setup.js
CHANGED
|
@@ -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(
|
|
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
|
|
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;
|
|
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.
|
|
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.
|
|
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
|
|
13
|
-
"@adeficior/data-modifier-ingredients": "^2.0.
|
|
14
|
-
"@adeficior/data-modifier-tags": "^2.0.
|
|
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",
|