mc-assets 0.1.7 → 0.2.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.
Binary file
@@ -6750,88 +6750,88 @@
6750
6750
  "v": 0.328125,
6751
6751
  "tileIndex": 1348
6752
6752
  },
6753
- "entity/decorated_pot/decorated_pot_base": {
6754
- "u": 0.078125,
6755
- "v": 0.328125,
6756
- "tileIndex": 1349,
6757
- "su": 0.03125,
6758
- "sv": 0.03125
6759
- },
6760
6753
  "entity/decorated_pot/decorated_pot_side": {
6761
- "u": 0.109375,
6754
+ "u": 0.078125,
6762
6755
  "v": 0.328125,
6763
- "tileIndex": 1351
6756
+ "tileIndex": 1349
6764
6757
  },
6765
6758
  "entity/signs/oak": {
6766
- "u": 0.125,
6759
+ "u": 0.09375,
6767
6760
  "v": 0.328125,
6768
- "tileIndex": 1352,
6761
+ "tileIndex": 1350,
6769
6762
  "su": 0.0625,
6770
6763
  "sv": 0.03125
6771
6764
  },
6772
6765
  "entity/sign": {
6773
- "u": 0.1875,
6766
+ "u": 0.15625,
6774
6767
  "v": 0.328125,
6775
- "tileIndex": 1356,
6768
+ "tileIndex": 1354,
6776
6769
  "su": 0.0625,
6777
6770
  "sv": 0.03125
6778
6771
  },
6779
6772
  "entity/signs/acacia": {
6780
- "u": 0.25,
6773
+ "u": 0.21875,
6781
6774
  "v": 0.328125,
6782
- "tileIndex": 1360,
6775
+ "tileIndex": 1358,
6783
6776
  "su": 0.0625,
6784
6777
  "sv": 0.03125
6785
6778
  },
6786
6779
  "entity/signs/birch": {
6787
- "u": 0.3125,
6780
+ "u": 0.28125,
6788
6781
  "v": 0.328125,
6789
- "tileIndex": 1364,
6782
+ "tileIndex": 1362,
6790
6783
  "su": 0.0625,
6791
6784
  "sv": 0.03125
6792
6785
  },
6793
6786
  "entity/signs/dark_oak": {
6794
- "u": 0.375,
6787
+ "u": 0.34375,
6795
6788
  "v": 0.328125,
6796
- "tileIndex": 1368,
6789
+ "tileIndex": 1366,
6797
6790
  "su": 0.0625,
6798
6791
  "sv": 0.03125
6799
6792
  },
6800
6793
  "entity/signs/jungle": {
6801
- "u": 0.4375,
6794
+ "u": 0.40625,
6802
6795
  "v": 0.328125,
6803
- "tileIndex": 1372,
6796
+ "tileIndex": 1370,
6804
6797
  "su": 0.0625,
6805
6798
  "sv": 0.03125
6806
6799
  },
6807
6800
  "entity/signs/spruce": {
6808
- "u": 0.5,
6801
+ "u": 0.46875,
6809
6802
  "v": 0.328125,
6810
- "tileIndex": 1376,
6803
+ "tileIndex": 1374,
6811
6804
  "su": 0.0625,
6812
6805
  "sv": 0.03125
6813
6806
  },
6814
6807
  "entity/signs/crimson": {
6815
- "u": 0.5625,
6808
+ "u": 0.53125,
6816
6809
  "v": 0.328125,
6817
- "tileIndex": 1380,
6810
+ "tileIndex": 1378,
6818
6811
  "su": 0.0625,
6819
6812
  "sv": 0.03125
6820
6813
  },
6821
6814
  "entity/signs/warped": {
6822
- "u": 0.625,
6815
+ "u": 0.59375,
6823
6816
  "v": 0.328125,
6824
- "tileIndex": 1384,
6817
+ "tileIndex": 1382,
6825
6818
  "su": 0.0625,
6826
6819
  "sv": 0.03125
6827
6820
  },
6828
6821
  "entity/signs/mangrove": {
6829
- "u": 0.6875,
6822
+ "u": 0.65625,
6830
6823
  "v": 0.328125,
6831
- "tileIndex": 1388,
6824
+ "tileIndex": 1386,
6832
6825
  "su": 0.0625,
6833
6826
  "sv": 0.03125
6834
6827
  },
6828
+ "entity/decorated_pot/decorated_pot_base": {
6829
+ "u": 0.71875,
6830
+ "v": 0.328125,
6831
+ "tileIndex": 1390,
6832
+ "su": 0.03125,
6833
+ "sv": 0.03125
6834
+ },
6835
6835
  "entity/signs/hanging/acacia": {
6836
6836
  "u": 0.75,
6837
6837
  "v": 0.328125,
@@ -7049,94 +7049,80 @@
7049
7049
  "su": 0.0625,
7050
7050
  "sv": 0.0625
7051
7051
  },
7052
- "entity/chest/normal_double": {
7052
+ "entity/chest/trapped": {
7053
7053
  "u": 0.6875,
7054
7054
  "v": 0.421875,
7055
7055
  "tileIndex": 1772,
7056
- "su": 0.125,
7057
- "sv": 0.0625
7058
- },
7059
- "entity/chest/trapped": {
7060
- "u": 0.8125,
7061
- "v": 0.421875,
7062
- "tileIndex": 1780,
7063
7056
  "su": 0.0625,
7064
7057
  "sv": 0.0625
7065
7058
  },
7066
- "entity/chest/trapped_double": {
7067
- "u": 0.875,
7068
- "v": 0.421875,
7069
- "tileIndex": 1784,
7070
- "su": 0.125,
7071
- "sv": 0.0625
7072
- },
7073
7059
  "entity/banner_base": {
7074
- "u": 0,
7075
- "v": 0.484375,
7076
- "tileIndex": 1984,
7060
+ "u": 0.75,
7061
+ "v": 0.421875,
7062
+ "tileIndex": 1776,
7077
7063
  "su": 0.0625,
7078
7064
  "sv": 0.0625
7079
7065
  },
7080
7066
  "entity/creeper/creeper": {
7081
- "u": 0.0625,
7082
- "v": 0.484375,
7083
- "tileIndex": 1988,
7067
+ "u": 0.8125,
7068
+ "v": 0.421875,
7069
+ "tileIndex": 1780,
7084
7070
  "su": 0.0625,
7085
7071
  "sv": 0.03125
7086
7072
  },
7087
7073
  "entity/enderdragon/dragon": {
7088
- "u": 0.125,
7074
+ "u": 0,
7089
7075
  "v": 0.484375,
7090
- "tileIndex": 1992,
7076
+ "tileIndex": 1984,
7091
7077
  "su": 0.25,
7092
7078
  "sv": 0.25
7093
7079
  },
7094
7080
  "entity/shulker/shulker_white": {
7095
- "u": 0.375,
7081
+ "u": 0.25,
7096
7082
  "v": 0.484375,
7097
- "tileIndex": 2008,
7083
+ "tileIndex": 2000,
7098
7084
  "su": 0.0625,
7099
7085
  "sv": 0.0625
7100
7086
  },
7101
7087
  "entity/piglin/piglin": {
7102
- "u": 0.4375,
7088
+ "u": 0.3125,
7103
7089
  "v": 0.484375,
7104
- "tileIndex": 2012,
7090
+ "tileIndex": 2004,
7105
7091
  "su": 0.0625,
7106
7092
  "sv": 0.0625
7107
7093
  },
7108
7094
  "entity/player/slim/steve": {
7109
- "u": 0.5,
7095
+ "u": 0.375,
7110
7096
  "v": 0.484375,
7111
- "tileIndex": 2016,
7097
+ "tileIndex": 2008,
7112
7098
  "su": 0.0625,
7113
7099
  "sv": 0.0625
7114
7100
  },
7115
7101
  "entity/shulker/shulker": {
7116
- "u": 0.5625,
7102
+ "u": 0.4375,
7117
7103
  "v": 0.484375,
7118
- "tileIndex": 2020,
7104
+ "tileIndex": 2012,
7119
7105
  "su": 0.0625,
7120
7106
  "sv": 0.0625
7121
7107
  },
7122
7108
  "entity/skeleton/skeleton": {
7123
- "u": 0.625,
7109
+ "u": 0.5,
7124
7110
  "v": 0.484375,
7125
- "tileIndex": 2024,
7111
+ "tileIndex": 2016,
7126
7112
  "su": 0.0625,
7127
7113
  "sv": 0.03125
7128
7114
  },
7129
7115
  "entity/skeleton/wither_skeleton": {
7130
- "u": 0.6875,
7116
+ "u": 0.5625,
7131
7117
  "v": 0.484375,
7132
- "tileIndex": 2028,
7118
+ "tileIndex": 2020,
7133
7119
  "su": 0.0625,
7134
7120
  "sv": 0.03125
7135
7121
  },
7136
7122
  "entity/zombie/zombie": {
7137
- "u": 0.75,
7123
+ "u": 0.625,
7138
7124
  "v": 0.484375,
7139
- "tileIndex": 2032,
7125
+ "tileIndex": 2024,
7140
7126
  "su": 0.0625,
7141
7127
  "sv": 0.0625
7142
7128
  }
@@ -35,11 +35,12 @@ export class ItemsRenderer {
35
35
  tryGetFullBlock(blockName, properties = {}) {
36
36
  if (!this.blocksAtlasParser)
37
37
  return;
38
- const resolvedModel = this.assetsParser.getResolvedModel({
38
+ const resolvedModelParts = this.assetsParser.getResolvedModelFirst({
39
39
  name: blockName,
40
40
  properties,
41
41
  }, true);
42
- if (resolvedModel.elements?.length !== 1)
42
+ const resolvedModel = resolvedModelParts?.[0];
43
+ if (resolvedModel?.elements?.length !== 1)
43
44
  return;
44
45
  const elem = resolvedModel.elements[0];
45
46
  if (elem.from[0] !== 0 || elem.from[1] !== 0 || elem.from[2] !== 0)
package/dist/types.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  type ModelBasic = {
2
2
  model: string;
3
3
  x?: number;
4
+ z?: number;
4
5
  y?: number;
5
6
  uvlock?: boolean;
7
+ /** only for array models */
8
+ weight?: number;
6
9
  };
7
10
  export type BlockApplyModel = ModelBasic | (ModelBasic & {
8
11
  weight: any;
@@ -51,9 +54,6 @@ export type BlockModel = {
51
54
  };
52
55
  }[];
53
56
  ambientocclusion?: boolean;
54
- x?: number;
55
- y?: number;
56
- z?: number;
57
57
  ao?: boolean;
58
58
  };
59
59
  type DisplayPresentation = {
@@ -1,10 +1,12 @@
1
1
  import { QueriedBlock } from './assetsParser';
2
2
  export default function worldBlockProvider(blockstatesModels: any, blocksAtlas: any, version: string): {
3
- getResolvedModel0_1(block: Omit<QueriedBlock, "stateId">, fallbackVariant?: boolean): {
3
+ getAllResolvedModels0_1(block: Omit<QueriedBlock, "stateId">, fallbackVariant?: boolean): {
4
+ ao?: boolean;
4
5
  x?: number;
5
6
  y?: number;
6
7
  z?: number;
7
- ao?: boolean;
8
+ uvlock?: boolean;
9
+ weight?: number;
8
10
  elements: {
9
11
  faces: {
10
12
  [k: string]: {
@@ -31,7 +33,7 @@ export default function worldBlockProvider(blockstatesModels: any, blocksAtlas:
31
33
  rescale?: boolean;
32
34
  };
33
35
  }[] | undefined;
34
- };
36
+ }[][];
35
37
  getTextureInfo(textureName: string): {
36
38
  su: number;
37
39
  sv: number;
@@ -7,54 +7,58 @@ export default function worldBlockProvider(blockstatesModels, blocksAtlas, versi
7
7
  const assetsParser = new AssetsParser(version, blockStatesStore, blockModelsStore);
8
8
  const atlasParser = new AtlasParser(blocksAtlas, 'latest', 'legacy');
9
9
  return {
10
- getResolvedModel0_1(block, fallbackVariant = false) {
11
- const model = assetsParser.getResolvedModel(block, fallbackVariant);
10
+ getAllResolvedModels0_1(block, fallbackVariant = false) {
11
+ const modelsParts = assetsParser.getAllResolvedModels(block, fallbackVariant) ?? [];
12
12
  const interestedFaces = ['north', 'east', 'south', 'west', 'up', 'down'];
13
- const { elements, textures, ...rest } = model;
14
- return {
15
- // todo validate elements
16
- elements: elements?.map((elem) => {
13
+ return modelsParts.map(modelVariants => {
14
+ return modelVariants.map(model => {
15
+ const { elements, textures, ...rest } = model;
17
16
  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 = this.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
- }))
17
+ // todo validate elements
18
+ elements: elements?.map((elem) => {
19
+ return {
20
+ ...elem,
21
+ faces: Object.fromEntries(Object.entries(elem.faces).map(([faceName, face]) => {
22
+ const texture = face.texture;
23
+ if (!texture)
24
+ throw new Error(`Missing resolved texture ${texture} for face ${faceName} of ${block.name}`);
25
+ const finalTexture = this.getTextureInfo(texture);
26
+ if (!finalTexture)
27
+ throw new Error(`Missing texture data ${texture} for ${block.name}`);
28
+ const _from = elem.from;
29
+ const _to = elem.to;
30
+ // taken from https://github.com/DragonDev1906/Minecraft-Overviewer/
31
+ const COORDINATE_MAX = 16;
32
+ const uv = (face.uv || {
33
+ // default UVs
34
+ // format: [u1, v1, u2, v2] (u = x, v = y)
35
+ north: [_to[0], COORDINATE_MAX - _to[1], _from[0], COORDINATE_MAX - _from[1]],
36
+ east: [_from[2], COORDINATE_MAX - _to[1], _to[2], COORDINATE_MAX - _from[1]],
37
+ south: [_from[0], COORDINATE_MAX - _to[1], _to[0], COORDINATE_MAX - _from[1]],
38
+ west: [_from[2], COORDINATE_MAX - _to[1], _to[2], COORDINATE_MAX - _from[1]],
39
+ up: [_from[0], _from[2], _to[0], _to[2]],
40
+ down: [_to[0], _from[2], _from[0], _to[2]]
41
+ }[faceName]);
42
+ const su = (uv[2] - uv[0]) / COORDINATE_MAX * finalTexture.su;
43
+ const sv = (uv[3] - uv[1]) / COORDINATE_MAX * finalTexture.sv;
44
+ return [faceName, {
45
+ ...face,
46
+ texture: {
47
+ u: finalTexture.u + uv[0] / 16 * finalTexture.su,
48
+ v: finalTexture.v + uv[1] / 16 * finalTexture.sv,
49
+ su,
50
+ sv,
51
+ tileIndex: finalTexture.tileIndex,
52
+ debugName: texture,
53
+ },
54
+ }];
55
+ }))
56
+ };
57
+ }),
58
+ ...rest
54
59
  };
55
- }),
56
- ...rest
57
- };
60
+ });
61
+ });
58
62
  },
59
63
  getTextureInfo(textureName) {
60
64
  return atlasParser.getTextureInfo(textureName.replace('block/', ''), version);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mc-assets",
3
- "version": "0.1.7",
3
+ "version": "0.2.1",
4
4
  "author": "Vitaly Turovsky <vital2580@icloud.com>",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -48,13 +48,15 @@
48
48
  "minecraft items",
49
49
  "minecraft colors",
50
50
  "minecraft parser",
51
- "minecraft extracter"
51
+ "minecraft extracter",
52
+ "minecraft block model parser",
53
+ "minecraft block entity"
52
54
  ],
53
55
  "repository": "https://github.com/zardoy/mc-assets",
54
56
  "scripts": {
55
57
  "build": "tsx src/datapaths-builder.ts && tsx src/blockEntities.ts && tsx src/newAssetsBuilder.ts && tsx src/genItems.ts && tsx src/genParticles.ts && tsx src/genBlocks.ts && tsx src/copyOtherTextures.ts && tsx src/compressImages.ts && pnpm type-check && pnpm build-consumer && pnpm build-web && tsx src/buildEndChecks.ts && tsx src/changeReadme.ts",
56
58
  "type-check": "tsc --noEmit",
57
- "regen-blockentities": "tsx src/blockEntities.ts && tsx src/newAssetsBuilder.ts && tsx src/genBlocks.ts",
59
+ "regen-blockentities": "rm -f dist/blockStatesModels.json && tsx src/blockEntities.ts && tsx src/newAssetsBuilder.ts && tsx src/genBlocks.ts",
58
60
  "build-consumer": "tsc -p tsconfig.consumer.json",
59
61
  "watch-dist": "tsc -p tsconfig.consumer.json -w",
60
62
  "build-web": "cd web-demo/ && pnpm build"