mc-assets 0.2.48 → 0.2.50
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/atlasParser.d.ts +10 -1
- package/dist/itemsRenderer.js +28 -5
- package/dist/itemsRenderer.test.js +21 -2
- package/dist/versionedStore.d.ts +1 -1
- package/dist/worldBlockProvider.d.ts +16 -7
- package/package.json +1 -1
package/dist/atlasParser.d.ts
CHANGED
|
@@ -33,7 +33,16 @@ export declare class AtlasParser {
|
|
|
33
33
|
atlasHasLegacyImage: boolean;
|
|
34
34
|
constructor(atlasJson: any, latestImage: string, legacyImage?: string | undefined);
|
|
35
35
|
get atlas(): ItemsAtlases;
|
|
36
|
-
getTextureInfo(itemName: string, version?: string):
|
|
36
|
+
getTextureInfo(itemName: string, version?: string): {
|
|
37
|
+
su: number;
|
|
38
|
+
sv: number;
|
|
39
|
+
getLoadedImage: () => Promise<HTMLImageElement>;
|
|
40
|
+
u: number;
|
|
41
|
+
v: number;
|
|
42
|
+
tileIndex: number;
|
|
43
|
+
imageType: "latest" | "legacy";
|
|
44
|
+
version: string;
|
|
45
|
+
} | undefined;
|
|
37
46
|
makeNewAtlas(version: string, getCustomImage?: (itemName: string) => DataUrl | HTMLImageElement | boolean | void, _unusedTileSize?: number, getTextureSortRankOrTopTextures?: string[] | ((key: string) => number), addTextures?: string[]): Promise<{
|
|
38
47
|
canvas: HTMLCanvasElement;
|
|
39
48
|
atlas: import("./atlasCreator").JsonAtlas;
|
package/dist/itemsRenderer.js
CHANGED
|
@@ -101,14 +101,37 @@ export class ItemsRenderer {
|
|
|
101
101
|
let model;
|
|
102
102
|
{
|
|
103
103
|
model = resolveModel(cleanFullModelPath);
|
|
104
|
-
if (!exactItemResolve) {
|
|
105
|
-
|
|
104
|
+
if (!exactItemResolve && !model) {
|
|
105
|
+
// todo resolve deep!
|
|
106
|
+
const itemModel = resolveModel(itemModelPath);
|
|
107
|
+
if (itemModel && itemModel.textures?.layer0) {
|
|
108
|
+
model = itemModel;
|
|
109
|
+
}
|
|
106
110
|
}
|
|
107
111
|
let blockModel = model?.parent?.includes('block/');
|
|
108
112
|
if (!model) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
if (onlyResolveBlockModel && !namespace) {
|
|
114
|
+
const [resolvedModel] = this.assetsParser.getResolvedModelFirst({ name: name, properties: {} }, true) ?? [];
|
|
115
|
+
if (resolvedModel) {
|
|
116
|
+
return {
|
|
117
|
+
resolvedModel,
|
|
118
|
+
get top() {
|
|
119
|
+
throw new Error('Was called with onlyResolveBlockModel = true');
|
|
120
|
+
},
|
|
121
|
+
get left() {
|
|
122
|
+
throw new Error('Was called with onlyResolveBlockModel = true');
|
|
123
|
+
},
|
|
124
|
+
get right() {
|
|
125
|
+
throw new Error('Was called with onlyResolveBlockModel = true');
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
model = resolveModel(blockModelPath);
|
|
132
|
+
if (model)
|
|
133
|
+
blockModel = true;
|
|
134
|
+
}
|
|
112
135
|
}
|
|
113
136
|
if (blockModel || model?.elements) {
|
|
114
137
|
return onlyResolveBlockModel ? this.resolveBlockModel(model, cleanFullModelPath) : this.tryGetFullBlock(model, cleanFullModelPath);
|
|
@@ -12,8 +12,8 @@ describe('ItemsRenderer', () => {
|
|
|
12
12
|
const blocksAtlasParser = new AtlasParser(blocksAtlases, '');
|
|
13
13
|
const version = '1.21.4';
|
|
14
14
|
const renderer = new ItemsRenderer(version, blockstatesModels, itemsAtlasParser, blocksAtlasParser);
|
|
15
|
-
const getItemTexture = (item) => {
|
|
16
|
-
const result = renderer.getItemTexture(item);
|
|
15
|
+
const getItemTexture = (item, onlyBlockModel = false) => {
|
|
16
|
+
const result = renderer.getItemTexture(item, undefined, undefined, onlyBlockModel);
|
|
17
17
|
if (!result)
|
|
18
18
|
return result;
|
|
19
19
|
const replaceSliceDeep = (obj) => {
|
|
@@ -23,6 +23,13 @@ describe('ItemsRenderer', () => {
|
|
|
23
23
|
obj.slice = obj['slice'].length === 4;
|
|
24
24
|
Object.values(obj).forEach(replaceSliceDeep);
|
|
25
25
|
};
|
|
26
|
+
if (onlyBlockModel) {
|
|
27
|
+
delete result['top'];
|
|
28
|
+
delete result['bottom'];
|
|
29
|
+
delete result['right'];
|
|
30
|
+
delete result['left'];
|
|
31
|
+
result['textures'] = result['resolvedModel']['textures'];
|
|
32
|
+
}
|
|
26
33
|
replaceSliceDeep(result);
|
|
27
34
|
result['resolvedModel'] = !!result['resolvedModel'];
|
|
28
35
|
return result;
|
|
@@ -92,6 +99,18 @@ describe('ItemsRenderer', () => {
|
|
|
92
99
|
}
|
|
93
100
|
`);
|
|
94
101
|
});
|
|
102
|
+
it('chest', () => {
|
|
103
|
+
expect(getItemTexture('chest')).toMatchInlineSnapshot(`undefined`);
|
|
104
|
+
expect(getItemTexture('chest', true)).toMatchInlineSnapshot(`
|
|
105
|
+
{
|
|
106
|
+
"resolvedModel": true,
|
|
107
|
+
"textures": {
|
|
108
|
+
"chest": "block/entity/chest/normal",
|
|
109
|
+
"particle": "block/birch_planks",
|
|
110
|
+
},
|
|
111
|
+
}
|
|
112
|
+
`);
|
|
113
|
+
});
|
|
95
114
|
it('not implemented logic', () => {
|
|
96
115
|
expect(getItemTexture('cut_copper_slab')).toMatchInlineSnapshot(`undefined`);
|
|
97
116
|
expect(getItemTexture('bla_bla')).toMatchInlineSnapshot(`undefined`);
|
package/dist/versionedStore.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare class VersionedStore<T = string> {
|
|
|
11
11
|
get versionsSorted(): string[];
|
|
12
12
|
/** The order is important: from newest to oldest */
|
|
13
13
|
push(version: string, key: string, data: T): void;
|
|
14
|
-
get(version: string, key: string, inclusive?: boolean):
|
|
14
|
+
get(version: string, key: string, inclusive?: boolean): T | undefined;
|
|
15
15
|
semverToNumber(version: string): number;
|
|
16
16
|
loadData(data: typeof this.data): void;
|
|
17
17
|
}
|
|
@@ -6,11 +6,11 @@ export default function worldBlockProvider(blockstatesModels: any, blocksAtlas:
|
|
|
6
6
|
faces: {
|
|
7
7
|
[k: string]: {
|
|
8
8
|
texture: {
|
|
9
|
-
u:
|
|
10
|
-
v:
|
|
9
|
+
u: number;
|
|
10
|
+
v: number;
|
|
11
11
|
su: number;
|
|
12
12
|
sv: number;
|
|
13
|
-
tileIndex:
|
|
13
|
+
tileIndex: number;
|
|
14
14
|
debugName: string;
|
|
15
15
|
};
|
|
16
16
|
uv?: number[];
|
|
@@ -46,11 +46,11 @@ export default function worldBlockProvider(blockstatesModels: any, blocksAtlas:
|
|
|
46
46
|
faces: {
|
|
47
47
|
[k: string]: {
|
|
48
48
|
texture: {
|
|
49
|
-
u:
|
|
50
|
-
v:
|
|
49
|
+
u: number;
|
|
50
|
+
v: number;
|
|
51
51
|
su: number;
|
|
52
52
|
sv: number;
|
|
53
|
-
tileIndex:
|
|
53
|
+
tileIndex: number;
|
|
54
54
|
debugName: string;
|
|
55
55
|
};
|
|
56
56
|
uv?: number[];
|
|
@@ -69,6 +69,15 @@ export default function worldBlockProvider(blockstatesModels: any, blocksAtlas:
|
|
|
69
69
|
};
|
|
70
70
|
}[];
|
|
71
71
|
} & Omit<T, "textures" | "elements">;
|
|
72
|
-
getTextureInfo: (textureName: string) =>
|
|
72
|
+
getTextureInfo: (textureName: string) => {
|
|
73
|
+
su: number;
|
|
74
|
+
sv: number;
|
|
75
|
+
getLoadedImage: () => Promise<HTMLImageElement>;
|
|
76
|
+
u: number;
|
|
77
|
+
v: number;
|
|
78
|
+
tileIndex: number;
|
|
79
|
+
imageType: "latest" | "legacy";
|
|
80
|
+
version: string;
|
|
81
|
+
} | undefined;
|
|
73
82
|
};
|
|
74
83
|
export type WorldBlockProvider = ReturnType<typeof worldBlockProvider>;
|