@adeficior/data-modifier-recipes 2.0.0-rc.20260814115618
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/.turbo/turbo-build.log +1 -0
- package/.turbo/turbo-check.log +1 -0
- package/.turbo/turbo-lint.log +1 -0
- package/@types/modules.d.ts +15 -0
- package/@types/registry.d.ts +20 -0
- package/CHANGELOG.md +14 -0
- package/dist/emitter.d.ts +48 -0
- package/dist/emitter.js +116 -0
- package/dist/emitter.js.map +1 -0
- package/dist/hooks.d.ts +6 -0
- package/dist/hooks.js +4 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +27 -0
- package/dist/loader.js +141 -0
- package/dist/loader.js.map +1 -0
- package/dist/module.d.ts +15 -0
- package/dist/module.js +38 -0
- package/dist/module.js.map +1 -0
- package/dist/rule.d.ts +15 -0
- package/dist/rule.js +31 -0
- package/dist/rule.js.map +1 -0
- package/dist/schema.d.ts +7 -0
- package/dist/schema.js +14 -0
- package/dist/schema.js.map +1 -0
- package/dist/serializer/abstract.d.ts +17 -0
- package/dist/serializer/abstract.js +19 -0
- package/dist/serializer/abstract.js.map +1 -0
- package/dist/serializer/context.d.ts +12 -0
- package/dist/serializer/context.js +4 -0
- package/dist/serializer/context.js.map +1 -0
- package/dist/serializer/forge/conditional.d.ts +25 -0
- package/dist/serializer/forge/conditional.js +45 -0
- package/dist/serializer/forge/conditional.js.map +1 -0
- package/dist/serializer/holder.d.ts +25 -0
- package/dist/serializer/holder.js +52 -0
- package/dist/serializer/holder.js.map +1 -0
- package/dist/serializer/manyToMany.d.ts +21 -0
- package/dist/serializer/manyToMany.js +37 -0
- package/dist/serializer/manyToMany.js.map +1 -0
- package/dist/serializer/manyToOne.d.ts +21 -0
- package/dist/serializer/manyToOne.js +37 -0
- package/dist/serializer/manyToOne.js.map +1 -0
- package/dist/serializer/modifier.d.ts +6 -0
- package/dist/serializer/modifier.js +3 -0
- package/dist/serializer/modifier.js.map +1 -0
- package/dist/serializer/oneToOne.d.ts +21 -0
- package/dist/serializer/oneToOne.js +37 -0
- package/dist/serializer/oneToOne.js.map +1 -0
- package/dist/serializer/vanilla/shaped.d.ts +22 -0
- package/dist/serializer/vanilla/shaped.js +37 -0
- package/dist/serializer/vanilla/shaped.js.map +1 -0
- package/dist/serializer/vanilla/shapeless.d.ts +4 -0
- package/dist/serializer/vanilla/shapeless.js +4 -0
- package/dist/serializer/vanilla/shapeless.js.map +1 -0
- package/dist/serializer/vanilla/smelting.d.ts +22 -0
- package/dist/serializer/vanilla/smelting.js +37 -0
- package/dist/serializer/vanilla/smelting.js.map +1 -0
- package/dist/serializer/vanilla/smithing.d.ts +25 -0
- package/dist/serializer/vanilla/smithing.js +46 -0
- package/dist/serializer/vanilla/smithing.js.map +1 -0
- package/dist/serializer/vanilla/stonecutting.d.ts +22 -0
- package/dist/serializer/vanilla/stonecutting.js +38 -0
- package/dist/serializer/vanilla/stonecutting.js.map +1 -0
- package/eslint.config.js +8 -0
- package/package.json +42 -0
- package/src/emitter.ts +239 -0
- package/src/hooks.ts +10 -0
- package/src/index.ts +18 -0
- package/src/loader.ts +219 -0
- package/src/module.ts +70 -0
- package/src/rule.ts +45 -0
- package/src/schema.ts +30 -0
- package/src/serializer/abstract.ts +41 -0
- package/src/serializer/context.ts +17 -0
- package/src/serializer/forge/conditional.ts +72 -0
- package/src/serializer/holder.ts +63 -0
- package/src/serializer/manyToMany.ts +62 -0
- package/src/serializer/manyToOne.ts +62 -0
- package/src/serializer/modifier.ts +10 -0
- package/src/serializer/oneToOne.ts +60 -0
- package/src/serializer/vanilla/shaped.ts +65 -0
- package/src/serializer/vanilla/shapeless.ts +8 -0
- package/src/serializer/vanilla/smelting.ts +62 -0
- package/src/serializer/vanilla/smithing.ts +74 -0
- package/src/serializer/vanilla/stonecutting.ts +63 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/setup.ts +85 -0
- package/test/1.20.1/__snapshots__/emitter.test.ts.snap +122 -0
- package/test/1.20.1/__snapshots__/loader.test.ts.snap +215 -0
- package/test/1.20.1/emitter.test.ts +222 -0
- package/test/1.20.1/loader.test.ts +17 -0
- package/test/1.21.1/loader.test.ts +17 -0
- package/test/1.21.1/packFormat.test.ts +52 -0
- package/test/resources/1.20.1/default/custom/data/custom/recipes/conditional.json +25 -0
- package/tsconfig.build.json +14 -0
- package/tsconfig.json +34 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { expect, it } from "bun:test";
|
|
2
|
+
import { basename } from "node:path";
|
|
3
|
+
import { setupRecipeLoader } from "../../src/testing";
|
|
4
|
+
|
|
5
|
+
const version = basename(import.meta.dir);
|
|
6
|
+
|
|
7
|
+
const { loader, logger } = setupRecipeLoader(version);
|
|
8
|
+
|
|
9
|
+
it("has no unknown recipe loaders", () => {
|
|
10
|
+
expect(loader.unknownRecipeTypes().map((it) => it.type)).toBeEmpty();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("does not encounter any errors", () => {
|
|
14
|
+
expect(logger.trace).not.toHaveBeenCalled();
|
|
15
|
+
expect(logger.warn).not.toHaveBeenCalled();
|
|
16
|
+
expect(logger.error).not.toHaveBeenCalled();
|
|
17
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { expect, it } from "bun:test";
|
|
2
|
+
import { basename } from "node:path";
|
|
3
|
+
import { setupRecipeLoader } from "../../src/testing";
|
|
4
|
+
|
|
5
|
+
const version = basename(import.meta.dir);
|
|
6
|
+
|
|
7
|
+
const { loader, logger } = setupRecipeLoader(version);
|
|
8
|
+
|
|
9
|
+
it("has no unknown recipe loaders", () => {
|
|
10
|
+
expect(loader.unknownRecipeTypes().map((it) => it.type)).toBeEmpty();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("does not encounter any errors", () => {
|
|
14
|
+
expect(logger.trace).not.toHaveBeenCalled();
|
|
15
|
+
expect(logger.warn).not.toHaveBeenCalled();
|
|
16
|
+
expect(logger.error).not.toHaveBeenCalled();
|
|
17
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
packFormatOf,
|
|
3
|
+
type LoaderContext,
|
|
4
|
+
} from "@adeficior/data-modifier-core";
|
|
5
|
+
import { mockRegistryProvider } from "@adeficior/data-modifier-core/testing";
|
|
6
|
+
import {
|
|
7
|
+
mockIngredientSerializer,
|
|
8
|
+
mockPredicates,
|
|
9
|
+
mockResultSerializer,
|
|
10
|
+
} from "@adeficior/data-modifier-ingredients/testing";
|
|
11
|
+
import {
|
|
12
|
+
createTestAcceptor,
|
|
13
|
+
createTestLogger,
|
|
14
|
+
} from "@adeficior/pack-resolver/testing";
|
|
15
|
+
import { describe, expect, it } from "bun:test";
|
|
16
|
+
import { EMPTY_RECIPE } from "../../src";
|
|
17
|
+
import { RecipeEmitter } from "../../src/emitter";
|
|
18
|
+
import { RecipeLoader } from "../../src/loader";
|
|
19
|
+
|
|
20
|
+
const version = "1.21.1";
|
|
21
|
+
// TODO common method?
|
|
22
|
+
const context: LoaderContext = { logger: createTestLogger() };
|
|
23
|
+
const serializer = new RecipeLoader(
|
|
24
|
+
mockResultSerializer(),
|
|
25
|
+
mockIngredientSerializer(),
|
|
26
|
+
);
|
|
27
|
+
const emitter = new RecipeEmitter(
|
|
28
|
+
context.logger,
|
|
29
|
+
packFormatOf(version),
|
|
30
|
+
mockRegistryProvider(),
|
|
31
|
+
mockResultSerializer(),
|
|
32
|
+
mockIngredientSerializer(),
|
|
33
|
+
mockPredicates(),
|
|
34
|
+
serializer,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
describe("loader respects different pack format versions", () => {
|
|
38
|
+
it("folders follow new syntax after 1.21", async () => {
|
|
39
|
+
const acceptor = createTestAcceptor();
|
|
40
|
+
|
|
41
|
+
emitter.add("example:test", EMPTY_RECIPE);
|
|
42
|
+
|
|
43
|
+
await emitter.resolver(context).extract(acceptor);
|
|
44
|
+
|
|
45
|
+
expect(acceptor.jsonAt("data/example/recipe/test.json")).toMatchObject(
|
|
46
|
+
EMPTY_RECIPE,
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
expect(acceptor.jsonAt("data/example/loot_tables/test.json")).toBeNull();
|
|
50
|
+
expect(acceptor.jsonAt("data/example/recipes/test.json")).toBeNull();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "forge:conditional",
|
|
3
|
+
"recipes": [
|
|
4
|
+
{
|
|
5
|
+
"conditions": [
|
|
6
|
+
{
|
|
7
|
+
"type": "forge:mod_loaded",
|
|
8
|
+
"modid": "farmersdelight"
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"recipe": {
|
|
12
|
+
"type": "minecraft:crafting_shapeless",
|
|
13
|
+
"ingredients": [
|
|
14
|
+
{
|
|
15
|
+
"item": "minecraft:poppy"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"result": {
|
|
19
|
+
"count": 2,
|
|
20
|
+
"item": "minecraft:purple_dye"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "@adeficior/configs/tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"rootDir": "./src",
|
|
5
|
+
"outDir": "./dist",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"sourceMap": true,
|
|
8
|
+
"paths": {
|
|
9
|
+
"@adeficior/data-modifier/generated": ["./@types/registry.d.ts"],
|
|
10
|
+
"@adeficior/data-modifier-core/generated": ["./@types/modules.d.ts"]
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"include": ["src"]
|
|
14
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "@adeficior/configs/tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"paths": {
|
|
5
|
+
"@adeficior/data-modifier-core": ["../../core/src/index.ts"],
|
|
6
|
+
"@adeficior/data-modifier-core/testing": [
|
|
7
|
+
"../../core/src/testing/index.ts"
|
|
8
|
+
],
|
|
9
|
+
"@adeficior/data-modifier-core/serializer": [
|
|
10
|
+
"../../core/src/serializer/index.ts"
|
|
11
|
+
],
|
|
12
|
+
"@adeficior/configs/eslint": ["../../packages/configs/eslint.config.ts"],
|
|
13
|
+
"@adeficior/configs/tsconfig": ["../../packages/configs/tsconfig.tson"],
|
|
14
|
+
"@adeficior/configs/tsconfig-build": [
|
|
15
|
+
"../../packages/configs/tsconfig.build.tson"
|
|
16
|
+
],
|
|
17
|
+
"@adeficior/testing": ["../../packages/testing/src/index.ts"],
|
|
18
|
+
"@adeficior/data-modifier-ingredients": [
|
|
19
|
+
"../../modules/ingredients/src/index.ts"
|
|
20
|
+
],
|
|
21
|
+
"@adeficior/data-modifier-ingredients/testing": [
|
|
22
|
+
"../../modules/ingredients/src/testing/index.ts"
|
|
23
|
+
],
|
|
24
|
+
"@adeficior/data-modifier-tags": ["../../modules/tags/src/index.ts"],
|
|
25
|
+
"@adeficior/data-modifier-tags/testing": [
|
|
26
|
+
"../../modules/tags/src/testing/index.ts"
|
|
27
|
+
],
|
|
28
|
+
"@adeficior/data-modifier/generated": ["./@types/registry.d.ts"],
|
|
29
|
+
"@adeficior/data-modifier-core/generated": ["./@types/modules.d.ts"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"include": ["src", "test"],
|
|
33
|
+
"exclude": ["test/resources"]
|
|
34
|
+
}
|