@adeficior/data-modifier-models 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.
@@ -0,0 +1,16 @@
1
+ import { type ClearableEmitter, type IdInput, type LoaderContext } from "@adeficior/data-modifier-core";
2
+ import { type Blockstate } from "../schema";
3
+ export interface BlockstateRules {
4
+ add(id: IdInput, blockstate: Blockstate): void;
5
+ basic(id: IdInput, model?: string): void;
6
+ cog(id: IdInput, model?: string): void;
7
+ }
8
+ export declare class BlockstateEmitter implements BlockstateRules, ClearableEmitter {
9
+ private readonly custom;
10
+ private filePath;
11
+ add(id: IdInput, blockstate: Blockstate): void;
12
+ resolver(context: LoaderContext): import("@adeficior/pack-resolver").Resolver<import("@adeficior/pack-resolver").Acceptable, import("@adeficior/pack-resolver").BaseContext>;
13
+ clear(): void;
14
+ basic(id: IdInput, model?: `${string}:${string}`): void;
15
+ cog(id: IdInput, model?: `${string}:${string}`): void;
16
+ }
@@ -0,0 +1,46 @@
1
+ import { CustomEmitter, prefix, } from "@adeficior/data-modifier-core";
2
+ import {} from "../schema";
3
+ export class BlockstateEmitter {
4
+ custom = new CustomEmitter(this.filePath);
5
+ filePath(id) {
6
+ return `assets/${id.namespace}/blockstates/${id.path}.json`;
7
+ }
8
+ add(id, blockstate) {
9
+ this.custom.add(id, blockstate);
10
+ }
11
+ resolver(context) {
12
+ return this.custom.resolver(context);
13
+ }
14
+ clear() {
15
+ this.custom.clear();
16
+ }
17
+ basic(id, model = prefix(id, "block/")) {
18
+ this.add(id, {
19
+ variants: {
20
+ "": {
21
+ model,
22
+ },
23
+ },
24
+ });
25
+ }
26
+ cog(id, model = prefix(id, "block/")) {
27
+ this.add(id, {
28
+ variants: {
29
+ "axis=x": {
30
+ model,
31
+ x: 90,
32
+ y: 90,
33
+ },
34
+ "axis=y": {
35
+ model,
36
+ },
37
+ "axis=z": {
38
+ model,
39
+ x: 90,
40
+ y: 180,
41
+ },
42
+ },
43
+ });
44
+ }
45
+ }
46
+ //# sourceMappingURL=blockstates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockstates.js","sourceRoot":"","sources":["../../src/emitter/blockstates.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAIb,MAAM,GACP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAmB,MAAM,WAAW,CAAC;AAQ5C,MAAM,OAAO,iBAAiB;IACX,MAAM,GAAG,IAAI,aAAa,CAAa,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/D,QAAQ,CAAC,EAAM;QACrB,OAAO,UAAU,EAAE,CAAC,SAAS,gBAAgB,EAAE,CAAC,IAAI,OAAO,CAAC;IAC9D,CAAC;IAED,GAAG,CAAC,EAAW,EAAE,UAAsB;QACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,OAAsB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,EAAW,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACX,QAAQ,EAAE;gBACR,EAAE,EAAE;oBACF,KAAK;iBACN;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,EAAW,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACX,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,KAAK;oBACL,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;gBACD,QAAQ,EAAE;oBACR,KAAK;iBACN;gBACD,QAAQ,EAAE;oBACR,KAAK;oBACL,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,GAAG;iBACP;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { type ClearableEmitter, type IdInput, type LoaderContext, type NormalizedId } from "@adeficior/data-modifier-core";
2
+ import { type Model } from "../schema";
3
+ export interface ModelRules {
4
+ add(id: IdInput, blockstate: Model): NormalizedId;
5
+ cubeAll(id: IdInput, texture?: string): NormalizedId;
6
+ flat(id: IdInput, texture?: string): NormalizedId;
7
+ cog(id: IdInput, large: boolean, texture?: string): NormalizedId;
8
+ }
9
+ export declare class ModelEmitter implements ModelRules, ClearableEmitter {
10
+ private readonly custom;
11
+ constructor(type: string);
12
+ clear(): void;
13
+ resolver(context: LoaderContext): import("@adeficior/pack-resolver").Resolver<import("@adeficior/pack-resolver").Acceptable, import("@adeficior/pack-resolver").BaseContext>;
14
+ add(id: IdInput, model: Model): `${string}:${string}`;
15
+ cubeAll(id: IdInput, texture?: `${string}:${string}`): `${string}:${string}`;
16
+ flat(id: IdInput, texture?: `${string}:${string}`): `${string}:${string}`;
17
+ cog(id: IdInput, large: boolean, texture?: `${string}:${string}`): `${string}:${string}`;
18
+ }
@@ -0,0 +1,59 @@
1
+ import { CustomEmitter, encodeId, prefix, suffix, } from "@adeficior/data-modifier-core";
2
+ import {} from "../schema";
3
+ export class ModelEmitter {
4
+ custom;
5
+ constructor(type) {
6
+ this.custom = new CustomEmitter((id) => `assets/${id.namespace}/models/${type}/${id.path}.json`);
7
+ }
8
+ clear() {
9
+ this.custom.clear();
10
+ }
11
+ resolver(context) {
12
+ return this.custom.resolver(context);
13
+ }
14
+ add(id, model) {
15
+ this.custom.add(id, model);
16
+ return encodeId(id);
17
+ }
18
+ cubeAll(id, texture = prefix(id, "block/")) {
19
+ return this.add(id, {
20
+ parent: "minecraft:block/cube_all",
21
+ textures: {
22
+ all: texture,
23
+ },
24
+ });
25
+ }
26
+ flat(id, texture = prefix(id, "item/")) {
27
+ return this.add(id, {
28
+ parent: "minecraft:item/generated",
29
+ textures: {
30
+ layer0: texture,
31
+ },
32
+ });
33
+ }
34
+ cog(id, large, texture = prefix(id, "block/")) {
35
+ const suffixes = ["", "_shaftless"];
36
+ const [normal] = suffixes.map((it) => {
37
+ if (large) {
38
+ return this.add(suffix(id, it), {
39
+ parent: "create:block/large_cogwheel" + it,
40
+ textures: {
41
+ "4": texture,
42
+ particle: texture,
43
+ },
44
+ });
45
+ }
46
+ else {
47
+ return this.add(suffix(id, it), {
48
+ parent: "create:block/cogwheel" + it,
49
+ textures: {
50
+ "1_2": texture,
51
+ particle: texture,
52
+ },
53
+ });
54
+ }
55
+ });
56
+ return normal;
57
+ }
58
+ }
59
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/emitter/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,QAAQ,EAIR,MAAM,EACN,MAAM,GACP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAc,MAAM,WAAW,CAAC;AAYvC,MAAM,OAAO,YAAY;IACN,MAAM,CAAC;IAExB,YAAY,IAAY;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAC7B,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,SAAS,WAAW,IAAI,IAAI,EAAE,CAAC,IAAI,OAAO,CAChE,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,QAAQ,CAAC,OAAsB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,EAAW,EAAE,KAAY;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,EAAW,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YAClB,MAAM,EAAE,0BAA0B;YAClC,QAAQ,EAAE;gBACR,GAAG,EAAE,OAAO;aACb;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,EAAW,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YAClB,MAAM,EAAE,0BAA0B;YAClC,QAAQ,EAAE;gBACR,MAAM,EAAE,OAAO;aAChB;SACF,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,EAAW,EAAE,KAAc,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC;QAC7D,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;oBAC9B,MAAM,EAAE,6BAA6B,GAAG,EAAE;oBAC1C,QAAQ,EAAE;wBACR,GAAG,EAAE,OAAO;wBACZ,QAAQ,EAAE,OAAO;qBAClB;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;oBAC9B,MAAM,EAAE,uBAAuB,GAAG,EAAE;oBACpC,QAAQ,EAAE;wBACR,KAAK,EAAE,OAAO;wBACd,QAAQ,EAAE,OAAO;qBAClB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export type { BlockstateRules } from "./emitter/blockstates";
2
+ export type { ModelRules } from "./emitter/models";
3
+ export { default } from "./module";
4
+ export type * from "./schema";
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { default } from "./module";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type BlockstateRules } from "./emitter/blockstates";
2
+ import { type ModelRules } from "./emitter/models";
3
+ declare const _default: import("@adeficior/data-modifier-core").ModuleConfig<{
4
+ emitters: {
5
+ "models:block": ModelRules;
6
+ "models:item": ModelRules;
7
+ blockstates: BlockstateRules;
8
+ };
9
+ }>;
10
+ export default _default;
package/dist/module.js ADDED
@@ -0,0 +1,20 @@
1
+ import { defineModule } from "@adeficior/data-modifier-core";
2
+ import { name } from "../package.json";
3
+ import { BlockstateEmitter } from "./emitter/blockstates";
4
+ import { ModelEmitter } from "./emitter/models";
5
+ export default defineModule({
6
+ importModule: name,
7
+ types: {
8
+ emitters: {
9
+ "models:block": "ModelRules",
10
+ "models:item": "ModelRules",
11
+ blockstates: "BlockstateRules",
12
+ },
13
+ },
14
+ setup: (pack) => {
15
+ pack.emitter("models:block", () => new ModelEmitter("block"));
16
+ pack.emitter("models:item", () => new ModelEmitter("item"));
17
+ pack.emitter("blockstates", () => new BlockstateEmitter());
18
+ },
19
+ });
20
+ //# sourceMappingURL=module.js.map
@@ -0,0 +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;AACvC,OAAO,EAAE,iBAAiB,EAAwB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAEjE,eAAe,YAAY,CAMxB;IACD,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,cAAc,EAAE,YAAY;YAC5B,aAAa,EAAE,YAAY;YAC3B,WAAW,EAAE,iBAAiB;SAC/B;KACF;IACD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ type Facing = "up" | "down" | "north" | "south" | "west" | "east";
2
+ type Axis = "x" | "y" | "z";
3
+ type Vec3 = [number, number, number];
4
+ type Vec4 = [number, number, number, number];
5
+ type Element = Readonly<{
6
+ from: Vec3;
7
+ to: Vec3;
8
+ faces: Record<Facing, {
9
+ texture: string;
10
+ uv?: Vec4;
11
+ cullface?: Facing;
12
+ }>;
13
+ rotation?: {
14
+ origin: Vec3;
15
+ axis: Axis;
16
+ angle: number;
17
+ rescale?: boolean;
18
+ };
19
+ shade?: boolean;
20
+ }>;
21
+ export type Model = Readonly<{
22
+ parent?: string;
23
+ textures?: Record<string, string>;
24
+ elements?: Element[];
25
+ ambientocclusion?: boolean;
26
+ }>;
27
+ type Variant = Readonly<{
28
+ model?: string;
29
+ x?: number;
30
+ y?: number;
31
+ z?: number;
32
+ }>;
33
+ export type Blockstate = Readonly<{
34
+ variants: Record<string, Variant>;
35
+ }>;
36
+ export {};
package/dist/schema.js ADDED
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@adeficior/data-modifier-models",
3
+ "version": "2.0.0-rc.20260814115618",
4
+ "exports": {
5
+ ".": "./dist/index.js"
6
+ },
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "type": "module",
12
+ "scripts": {
13
+ "build": "tsc --project tsconfig.build.json",
14
+ "check": "tsc --noEmit",
15
+ "dev": "bun run build --watch",
16
+ "lint": "eslint {src,test}",
17
+ "test": "bun test --timeout 10000",
18
+ "prune": "bun run datamod-dev --prune",
19
+ "prepare": "datamod-dev --configs && datamod-dev --types",
20
+ "test:ci": "bun run lint && bun run check && bun run test --coverage"
21
+ },
22
+ "devDependencies": {
23
+ "@adeficior/configs": "workspace:*",
24
+ "@adeficior/testing": "workspace:*",
25
+ "@adeficior/data-modifier-core": "workspace:*"
26
+ },
27
+ "peerDependencies": {
28
+ "@adeficior/pack-resolver": "catalog:",
29
+ "typescript": "catalog:",
30
+ "@adeficior/data-modifier-core": "workspace:*"
31
+ }
32
+ }