mc-assets 0.2.49 → 0.2.51

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/README.MD CHANGED
@@ -27,7 +27,7 @@ For contributing & building instructions see [building](#building) section.
27
27
  > Tested on Node.js 18 and above.
28
28
 
29
29
 
30
- All blockstates + models + all atlas textures for all versions bundled with rsbuild (uncompressed): 4.99 MB.
30
+ All blockstates + models + all atlas textures for all versions bundled with rsbuild (uncompressed): 5 MB.
31
31
 
32
32
  This packages includes versions for: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5-pre2, 1.21.5-pre3, 1.21.5-rc1, 1.21.5-rc2, 1.21.5.
33
33
 
@@ -1,5 +1,5 @@
1
1
  import { BlockModelsStore, BlockStatesStore } from './stores';
2
- import { BlockElementPos, BlockModel } from './types';
2
+ import { BlockElementPos, BlockModel, ResolvedBlockModel } from './types';
3
3
  export interface QueriedBlock {
4
4
  stateId: number;
5
5
  name: string;
@@ -24,42 +24,12 @@ export declare class AssetsParser {
24
24
  private getModelsByBlock;
25
25
  private getModelData;
26
26
  getResolvedModelsByModel(model: string, debugQueryName?: string, clearModel?: boolean): {
27
- resolvedModel: Pick<BlockModel, "textures" | "ao" | "elements"> & {
28
- x?: number;
29
- y?: number;
30
- z?: number;
31
- uvlock?: boolean;
32
- weight?: number;
33
- };
27
+ resolvedModel: ResolvedBlockModel;
34
28
  } | undefined;
35
29
  getResolvedModelsByModelData(modelData: BlockModel, debugQueryName?: string, clearModel?: boolean): {
36
- resolvedModel: Pick<BlockModel, "textures" | "ao" | "elements"> & {
37
- x?: number;
38
- y?: number;
39
- z?: number;
40
- uvlock?: boolean;
41
- weight?: number;
42
- };
30
+ resolvedModel: ResolvedBlockModel;
43
31
  };
44
- getResolvedModelFirst(queriedBlock: Omit<QueriedBlock, 'stateId'>, fallbackVariant?: boolean): (Pick<BlockModel, "textures" | "ao" | "elements"> & {
45
- x?: number;
46
- y?: number;
47
- z?: number;
48
- uvlock?: boolean;
49
- weight?: number;
50
- })[] | undefined;
51
- getResolvedModelRandom(queriedBlock: Omit<QueriedBlock, 'stateId'>, fallbackVariant?: boolean): (Pick<BlockModel, "textures" | "ao" | "elements"> & {
52
- x?: number;
53
- y?: number;
54
- z?: number;
55
- uvlock?: boolean;
56
- weight?: number;
57
- })[] | undefined;
58
- getAllResolvedModels(queriedBlock: Omit<QueriedBlock, 'stateId'>, fallbackVariant?: boolean): (Pick<BlockModel, "textures" | "ao" | "elements"> & {
59
- x?: number;
60
- y?: number;
61
- z?: number;
62
- uvlock?: boolean;
63
- weight?: number;
64
- })[][] | undefined;
32
+ getResolvedModelFirst(queriedBlock: Omit<QueriedBlock, 'stateId'>, fallbackVariant?: boolean): ResolvedBlockModel[] | undefined;
33
+ getResolvedModelRandom(queriedBlock: Omit<QueriedBlock, 'stateId'>, fallbackVariant?: boolean): ResolvedBlockModel[] | undefined;
34
+ getAllResolvedModels(queriedBlock: Omit<QueriedBlock, 'stateId'>, fallbackVariant?: boolean): ResolvedBlockModel[][] | undefined;
65
35
  }
@@ -49,8 +49,9 @@ export class AssetsParser {
49
49
  const elementsOptimized = allElements.length === 1 && arrEq(allElements[0][0], [0, 0, 0]) && arrEq(allElements[0][1], [16, 16, 16]) ? 1 : allElements;
50
50
  return elementsOptimized;
51
51
  }
52
- // looks like workaround
53
- resolvedModel = {};
52
+ resolvedModel = {
53
+ modelName: ''
54
+ };
54
55
  issues = [];
55
56
  matchedModels = [];
56
57
  matchedConditions = [];
@@ -154,6 +155,7 @@ export class AssetsParser {
154
155
  for (const varModel of Array.isArray(model) ? model : [model]) {
155
156
  variant++;
156
157
  this.resolvedModel = {
158
+ modelName: varModel.model ?? queriedBlock.name,
157
159
  x: varModel.x,
158
160
  y: varModel.y,
159
161
  z: varModel.z,
@@ -169,7 +171,7 @@ export class AssetsParser {
169
171
  break;
170
172
  }
171
173
  }
172
- return modelsResolved; // todo figure out the type error
174
+ return modelsResolved;
173
175
  }
174
176
  getModelData(model) {
175
177
  const modelData = this.blockModelsStore.get(this.version, model.replace('minecraft:', ''));
@@ -177,7 +179,9 @@ export class AssetsParser {
177
179
  }
178
180
  getResolvedModelsByModel(model, debugQueryName, clearModel = true) {
179
181
  if (clearModel) {
180
- this.resolvedModel = {};
182
+ this.resolvedModel = {
183
+ modelName: this.resolvedModel.modelName
184
+ };
181
185
  }
182
186
  const modelData = this.getModelData(model);
183
187
  if (!modelData) {
@@ -189,7 +193,9 @@ export class AssetsParser {
189
193
  }
190
194
  getResolvedModelsByModelData(modelData, debugQueryName, clearModel = true) {
191
195
  if (clearModel) {
192
- this.resolvedModel = {};
196
+ this.resolvedModel = {
197
+ modelName: this.resolvedModel.modelName
198
+ };
193
199
  }
194
200
  const collectedParentModels = [];
195
201
  const collectModels = (model) => {
@@ -29,11 +29,11 @@ export type AtlasCreatorOptions = {
29
29
  renderSourceWidth?: number;
30
30
  renderSourceHeight?: number;
31
31
  };
32
- format?: 'uv' | 'index';
32
+ needHorizontalIndexes?: boolean;
33
33
  tileSize?: number;
34
34
  getCanvas?: (imgSize: number) => HTMLCanvasElement;
35
35
  };
36
- export declare const makeTextureAtlas: ({ input, getLoadedImage, tileSize, getCanvas, }: AtlasCreatorOptions) => {
36
+ export declare const makeTextureAtlas: ({ input, getLoadedImage, tileSize, getCanvas, needHorizontalIndexes, }: AtlasCreatorOptions) => {
37
37
  json: JsonAtlas;
38
38
  canvas: HTMLCanvasElement;
39
39
  };
@@ -1,3 +1,4 @@
1
+ //@ts-ignore
1
2
  import { MaxRectsPacker, PACKING_LOGIC, Rectangle } from 'maxrects-packer';
2
3
  export const MAX_CANVAS_SIZE = 16_384;
3
4
  function nextPowerOfTwo(n) {
@@ -18,7 +19,7 @@ export const getAtlasSize = (numberOfTiles, tileSize) => {
18
19
  height: size * tileSize
19
20
  };
20
21
  };
21
- export const makeTextureAtlas = ({ input, getLoadedImage, tileSize = 16, getCanvas = (imgSize) => typeof document !== 'undefined' && document.createElement ? document.createElement('canvas') : new globalThis.Canvas(imgSize, imgSize, 'png'), }) => {
22
+ export const makeTextureAtlas = ({ input, getLoadedImage, tileSize = 16, getCanvas = (imgSize) => typeof document !== 'undefined' && document.createElement ? document.createElement('canvas') : new globalThis.Canvas(imgSize, imgSize, 'png'), needHorizontalIndexes = false, }) => {
22
23
  // Pre-calculate all texture dimensions and prepare images
23
24
  const texturesWithDimensions = [...new Set(input)].map(keyValue => {
24
25
  const inputData = getLoadedImage(keyValue);
@@ -56,9 +57,10 @@ export const makeTextureAtlas = ({ input, getLoadedImage, tileSize = 16, getCanv
56
57
  // Use MaxRectsPacker to calculate optimal positions
57
58
  const packer = new MaxRectsPacker(undefined, undefined, 0, {
58
59
  square: true,
59
- smart: true,
60
60
  pot: true,
61
- logic: PACKING_LOGIC.MAX_AREA,
61
+ ...needHorizontalIndexes ? {} : { smart: true },
62
+ logic: needHorizontalIndexes ? PACKING_LOGIC.FILL_WIDTH : PACKING_LOGIC.MAX_AREA,
63
+ // logic: PACKING_LOGIC.FILL_WIDTH,
62
64
  });
63
65
  // Add all textures as rectangles
64
66
  const rectangles = texturesWithDimensions.map(tex => {
@@ -1,4 +1,5 @@
1
1
  import { VersionedStore } from './versionedStore';
2
+ import { AtlasCreatorOptions } from './atlasCreator';
2
3
  type Texture = {
3
4
  u: number;
4
5
  v: number;
@@ -33,8 +34,19 @@ export declare class AtlasParser {
33
34
  atlasHasLegacyImage: boolean;
34
35
  constructor(atlasJson: any, latestImage: string, legacyImage?: string | undefined);
35
36
  get atlas(): ItemsAtlases;
36
- getTextureInfo(itemName: string, version?: string): any;
37
- makeNewAtlas(version: string, getCustomImage?: (itemName: string) => DataUrl | HTMLImageElement | boolean | void, _unusedTileSize?: number, getTextureSortRankOrTopTextures?: string[] | ((key: string) => number), addTextures?: string[]): Promise<{
37
+ getTextureInfo(itemName: string, version?: string): {
38
+ su: number;
39
+ sv: number;
40
+ /** @deprecated */
41
+ getLoadedImage: () => Promise<HTMLImageElement>;
42
+ getLoadedAtlasImage: () => Promise<HTMLImageElement>;
43
+ u: number;
44
+ v: number;
45
+ tileIndex: number;
46
+ imageType: "latest" | "legacy";
47
+ version: string;
48
+ } | undefined;
49
+ makeNewAtlas(version: string, getCustomImage?: (itemName: string) => DataUrl | HTMLImageElement | boolean | void, _unusedTileSize?: number, getTextureSortRankOrTopTextures?: string[] | ((key: string) => number), addTextures?: string[], options?: Pick<AtlasCreatorOptions, 'needHorizontalIndexes' | 'getCanvas'>): Promise<{
38
50
  canvas: HTMLCanvasElement;
39
51
  atlas: import("./atlasCreator").JsonAtlas;
40
52
  readonly newAtlasParser: AtlasParser;
@@ -40,12 +40,18 @@ export class AtlasParser {
40
40
  ...info,
41
41
  su: info?.su ?? defaultSuSv,
42
42
  sv: info?.sv ?? defaultSuSv,
43
+ /** @deprecated */
43
44
  getLoadedImage: async () => {
44
45
  return await getLoadedImage(info.imageType === 'latest' ? this.latestImage : this.legacyImage);
45
- }
46
+ },
47
+ getLoadedAtlasImage: async () => {
48
+ return await getLoadedImage(info.imageType === 'latest' ? this.latestImage : this.legacyImage);
49
+ },
46
50
  };
47
51
  }
48
- async makeNewAtlas(version, getCustomImage, _unusedTileSize = this.atlas.latest.tileSize, getTextureSortRankOrTopTextures, addTextures = []) {
52
+ // getRenderedFullBlockSide(resolvedModel: ResolvedBlockModel, side: 'top' | 'bottom' | 'north' | 'south' | 'east' | 'west') {
53
+ // }
54
+ async makeNewAtlas(version, getCustomImage, _unusedTileSize = this.atlas.latest.tileSize, getTextureSortRankOrTopTextures, addTextures = [], options = {}) {
49
55
  const itemsAtlases = this.atlasJson;
50
56
  const newTextures = {};
51
57
  const legacyImg = this.atlasHasLegacyImage ? await getLoadedImage(this.legacyImage) : null;
@@ -106,6 +112,7 @@ export class AtlasParser {
106
112
  };
107
113
  },
108
114
  tileSize: this.atlas.latest.tileSize,
115
+ ...options,
109
116
  });
110
117
  let _newAtlasParser;
111
118
  return {
@@ -17,13 +17,7 @@ export declare class ItemsRenderer {
17
17
  path: string;
18
18
  } | undefined;
19
19
  resolveBlockModel(model: any, blockName: string): {
20
- resolvedModel: Pick<BlockModel, "textures" | "ao" | "elements"> & {
21
- x?: number;
22
- y?: number;
23
- z?: number;
24
- uvlock?: boolean;
25
- weight?: number;
26
- };
20
+ resolvedModel: import("./types").ResolvedBlockModel;
27
21
  readonly top: string;
28
22
  readonly left: string;
29
23
  readonly right: string;
@@ -55,13 +49,7 @@ export declare class ItemsRenderer {
55
49
  /** @deprecated */
56
50
  path: string;
57
51
  } | {
58
- resolvedModel: Pick<BlockModel, "textures" | "ao" | "elements"> & {
59
- x?: number;
60
- y?: number;
61
- z?: number;
62
- uvlock?: boolean;
63
- weight?: number;
64
- };
52
+ resolvedModel: import("./types").ResolvedBlockModel;
65
53
  readonly top: string;
66
54
  readonly left: string;
67
55
  readonly right: string;
package/dist/types.d.ts CHANGED
@@ -58,6 +58,14 @@ export type BlockModel = {
58
58
  ambientocclusion?: boolean;
59
59
  ao?: boolean;
60
60
  };
61
+ export type ResolvedBlockModel = Pick<BlockModel, 'textures' | 'elements' | 'ao'> & {
62
+ modelName: string;
63
+ x?: number;
64
+ y?: number;
65
+ z?: number;
66
+ uvlock?: boolean;
67
+ weight?: number;
68
+ };
61
69
  type DisplayPresentation = {
62
70
  rotation?: [number, number, number];
63
71
  translation?: [number, number, number];
@@ -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): any;
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
  }
@@ -1,16 +1,16 @@
1
1
  import { QueriedBlock } from './assetsParser';
2
2
  import { BlockModel } from './types';
3
3
  export default function worldBlockProvider(blockstatesModels: any, blocksAtlas: any, version: string): {
4
- getAllResolvedModels0_1(block: Omit<QueriedBlock, "stateId">, fallbackVariant?: boolean, possibleIssues?: string[], matchedModels?: string[], matchedConditions?: string[]): ({
4
+ getAllResolvedModels0_1(block: Omit<QueriedBlock, "stateId">, fallbackVariant?: boolean, possibleIssues?: string[], matchedModels?: string[], matchedConditions?: string[], partialElementsProcessing?: boolean): ({
5
5
  elements: {
6
6
  faces: {
7
7
  [k: string]: {
8
8
  texture: {
9
- u: any;
10
- v: any;
9
+ u: number;
10
+ v: number;
11
11
  su: number;
12
12
  sv: number;
13
- tileIndex: any;
13
+ tileIndex: number;
14
14
  debugName: string;
15
15
  };
16
16
  uv?: number[];
@@ -28,29 +28,17 @@ export default function worldBlockProvider(blockstatesModels: any, blocksAtlas:
28
28
  rescale?: boolean;
29
29
  };
30
30
  }[];
31
- } & Omit<Pick<BlockModel, "textures" | "ao" | "elements"> & {
32
- x?: number;
33
- y?: number;
34
- z?: number;
35
- uvlock?: boolean;
36
- weight?: number;
37
- }, "textures" | "elements">)[][];
38
- transformModel: <T extends BlockModel | (Pick<BlockModel, "textures" | "ao" | "elements"> & {
39
- x?: number;
40
- y?: number;
41
- z?: number;
42
- uvlock?: boolean;
43
- weight?: number;
44
- })>(model: T, block: Omit<QueriedBlock, "stateId">) => {
31
+ } & Omit<import("./types").ResolvedBlockModel, "textures" | "elements">)[][];
32
+ transformModel: <T extends BlockModel | import("./types").ResolvedBlockModel>(model: T, block: Omit<QueriedBlock, "stateId">, elementsProcessingIssues?: string[]) => {
45
33
  elements: {
46
34
  faces: {
47
35
  [k: string]: {
48
36
  texture: {
49
- u: any;
50
- v: any;
37
+ u: number;
38
+ v: number;
51
39
  su: number;
52
40
  sv: number;
53
- tileIndex: any;
41
+ tileIndex: number;
54
42
  debugName: string;
55
43
  };
56
44
  uv?: number[];
@@ -69,6 +57,16 @@ export default function worldBlockProvider(blockstatesModels: any, blocksAtlas:
69
57
  };
70
58
  }[];
71
59
  } & Omit<T, "textures" | "elements">;
72
- getTextureInfo: (textureName: string) => any;
60
+ getTextureInfo: (textureName: string) => {
61
+ su: number;
62
+ sv: number;
63
+ getLoadedImage: () => Promise<HTMLImageElement>;
64
+ getLoadedAtlasImage: () => Promise<HTMLImageElement>;
65
+ u: number;
66
+ v: number;
67
+ tileIndex: number;
68
+ imageType: "latest" | "legacy";
69
+ version: string;
70
+ } | undefined;
73
71
  };
74
72
  export type WorldBlockProvider = ReturnType<typeof worldBlockProvider>;
@@ -9,55 +9,61 @@ export default function worldBlockProvider(blockstatesModels, blocksAtlas, versi
9
9
  const getTextureInfo = (textureName) => {
10
10
  return atlasParser.getTextureInfo(textureName.replace('block/', '').replace('blocks/', ''), version);
11
11
  };
12
- const transformModel = (model, block) => {
12
+ const transformModel = (model, block, elementsProcessingIssues) => {
13
13
  const { elements, textures, ...rest } = model;
14
14
  return {
15
15
  // todo validate elements
16
- elements: elements?.map((elem) => {
17
- return {
18
- ...elem,
19
- faces: Object.fromEntries(Object.entries(elem.faces).map(([faceName, face]) => {
20
- const texture = face.texture;
21
- if (!texture)
22
- throw new Error(`Missing resolved texture ${texture} for face ${faceName} of ${block.name}`);
23
- const finalTexture = getTextureInfo(texture);
24
- if (!finalTexture)
25
- throw new Error(`Missing texture data ${texture} for ${block.name}`);
26
- const _from = elem.from;
27
- const _to = elem.to;
28
- // taken from https://github.com/DragonDev1906/Minecraft-Overviewer/
29
- const COORDINATE_MAX = 16;
30
- const uv = (face.uv || {
31
- // default UVs
32
- // format: [u1, v1, u2, v2] (u = x, v = y)
33
- north: [_to[0], COORDINATE_MAX - _to[1], _from[0], COORDINATE_MAX - _from[1]],
34
- east: [_from[2], COORDINATE_MAX - _to[1], _to[2], COORDINATE_MAX - _from[1]],
35
- south: [_from[0], COORDINATE_MAX - _to[1], _to[0], COORDINATE_MAX - _from[1]],
36
- west: [_from[2], COORDINATE_MAX - _to[1], _to[2], COORDINATE_MAX - _from[1]],
37
- up: [_from[0], _from[2], _to[0], _to[2]],
38
- down: [_to[0], _from[2], _from[0], _to[2]]
39
- }[faceName]);
40
- const su = (uv[2] - uv[0]) / COORDINATE_MAX * finalTexture.su;
41
- const sv = (uv[3] - uv[1]) / COORDINATE_MAX * finalTexture.sv;
42
- return [faceName, {
43
- ...face,
44
- texture: {
45
- u: finalTexture.u + uv[0] / 16 * finalTexture.su,
46
- v: finalTexture.v + uv[1] / 16 * finalTexture.sv,
47
- su,
48
- sv,
49
- tileIndex: finalTexture.tileIndex,
50
- debugName: texture,
51
- },
52
- }];
53
- }))
54
- };
55
- }),
16
+ elements: elements?.map((elem, i) => {
17
+ try {
18
+ return {
19
+ ...elem,
20
+ faces: Object.fromEntries(Object.entries(elem.faces).map(([faceName, face]) => {
21
+ const texture = face.texture;
22
+ if (!texture)
23
+ throw new Error(`Missing resolved texture ${texture} for face ${faceName} of ${block.name}`);
24
+ const finalTexture = getTextureInfo(texture);
25
+ if (!finalTexture)
26
+ throw new Error(`Missing texture data ${texture} for ${block.name}`);
27
+ const _from = elem.from;
28
+ const _to = elem.to;
29
+ // taken from https://github.com/DragonDev1906/Minecraft-Overviewer/
30
+ const COORDINATE_MAX = 16;
31
+ const uv = (face.uv || {
32
+ // default UVs
33
+ // format: [u1, v1, u2, v2] (u = x, v = y)
34
+ north: [_to[0], COORDINATE_MAX - _to[1], _from[0], COORDINATE_MAX - _from[1]],
35
+ east: [_from[2], COORDINATE_MAX - _to[1], _to[2], COORDINATE_MAX - _from[1]],
36
+ south: [_from[0], COORDINATE_MAX - _to[1], _to[0], COORDINATE_MAX - _from[1]],
37
+ west: [_from[2], COORDINATE_MAX - _to[1], _to[2], COORDINATE_MAX - _from[1]],
38
+ up: [_from[0], _from[2], _to[0], _to[2]],
39
+ down: [_to[0], _from[2], _from[0], _to[2]]
40
+ }[faceName]);
41
+ const su = (uv[2] - uv[0]) / COORDINATE_MAX * finalTexture.su;
42
+ const sv = (uv[3] - uv[1]) / COORDINATE_MAX * finalTexture.sv;
43
+ return [faceName, {
44
+ ...face,
45
+ texture: {
46
+ u: finalTexture.u + uv[0] / 16 * finalTexture.su,
47
+ v: finalTexture.v + uv[1] / 16 * finalTexture.sv,
48
+ su,
49
+ sv,
50
+ tileIndex: finalTexture.tileIndex,
51
+ debugName: texture,
52
+ },
53
+ }];
54
+ }))
55
+ };
56
+ }
57
+ catch (e) {
58
+ elementsProcessingIssues?.push(`Error processing element ${i} in ${block.name}: ${e.message}`);
59
+ return null;
60
+ }
61
+ }).filter(a => a !== null),
56
62
  ...rest
57
63
  };
58
64
  };
59
65
  return {
60
- getAllResolvedModels0_1(block, fallbackVariant = false, possibleIssues = [], matchedModels = [], matchedConditions = []) {
66
+ getAllResolvedModels0_1(block, fallbackVariant = false, possibleIssues = [], matchedModels = [], matchedConditions = [], partialElementsProcessing = false) {
61
67
  assetsParser.issues = [];
62
68
  assetsParser.matchedModels = [];
63
69
  assetsParser.matchedConditions = [];
@@ -74,7 +80,7 @@ export default function worldBlockProvider(blockstatesModels, blocksAtlas, versi
74
80
  const result = modelsParts.map(modelVariants => {
75
81
  return modelVariants.map(model => {
76
82
  try {
77
- return transformModel(model, block);
83
+ return transformModel(model, block, partialElementsProcessing ? possibleIssues : undefined);
78
84
  }
79
85
  catch (e) {
80
86
  possibleIssues.push(`Error transforming model for ${block.name}: ${e.message}`);
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "mc-assets",
3
- "version": "0.2.49",
3
+ "version": "0.2.51",
4
4
  "author": "Vitaly Turovsky <vital2580@icloud.com>",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "dist",
8
- "docs-assets"
8
+ "docs-assets",
9
+ "temp-lib"
9
10
  ],
10
11
  "main": "./dist/index.js",
11
12
  "types": "./dist/index.d.ts",
@@ -53,7 +54,7 @@
53
54
  "minecraft block entity"
54
55
  ],
55
56
  "dependencies": {
56
- "maxrects-packer": "^2.7.3",
57
+ "maxrects-packer": "file:./temp-lib/zardoy-maxrects-packer-2.7.4.tgz",
57
58
  "zod": "^3.24.1"
58
59
  },
59
60
  "repository": "https://github.com/zardoy/mc-assets",