@nodecraft/rendermite 1.1.3 → 1.2.0

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.
Files changed (127) hide show
  1. package/README.md +27 -2
  2. package/assets/builtin/renderchest/models/block/banner_standing.json +225 -0
  3. package/assets/builtin/renderchest/models/block/banner_wall.json +155 -0
  4. package/assets/builtin/renderchest/models/block/bed_foot.json +44 -0
  5. package/assets/builtin/renderchest/models/block/bed_head.json +44 -0
  6. package/assets/builtin/renderchest/models/block/chest_left.json +182 -0
  7. package/assets/builtin/renderchest/models/block/chest_right.json +182 -0
  8. package/assets/builtin/renderchest/models/block/copper_golem_statue.json +709 -0
  9. package/assets/builtin/renderchest/models/block/fluid.json +83 -0
  10. package/assets/builtin/renderchest/models/block/fluid_tinted.json +89 -0
  11. package/assets/builtin/renderchest/models/block/hanging_sign.json +54 -0
  12. package/assets/builtin/renderchest/models/block/standing_sign.json +32 -0
  13. package/assets/builtin/renderchest/models/block/wall_sign.json +19 -0
  14. package/dist/atlas/registry.js +1 -1
  15. package/dist/atlas/sources.js +1 -1
  16. package/dist/atlas-pack-CoOih7By.js +130 -0
  17. package/dist/atlas-pack-DRTrWcSU.d.ts +41 -0
  18. package/dist/block-entities-BbS1kv0m.js +481 -0
  19. package/dist/blocks/atlas-pack.d.ts +2 -0
  20. package/dist/blocks/atlas-pack.js +2 -0
  21. package/dist/blocks/block-entities.d.ts +93 -0
  22. package/dist/blocks/block-entities.js +2 -0
  23. package/dist/blocks/blockstate-eval.d.ts +2 -0
  24. package/dist/blocks/blockstate-eval.js +2 -0
  25. package/dist/blocks/cli.d.ts +9 -0
  26. package/dist/blocks/cli.js +2 -0
  27. package/dist/blocks/export.d.ts +2 -0
  28. package/dist/blocks/export.js +2 -0
  29. package/dist/blocks/obj-mesh.d.ts +2 -0
  30. package/dist/blocks/obj-mesh.js +2 -0
  31. package/dist/blocks/tints.d.ts +2 -0
  32. package/dist/blocks/tints.js +2 -0
  33. package/dist/{blockstate-CdstnW2-.js → blockstate-DVb8Mhxc.js} +1 -1
  34. package/dist/blockstate-eval-Ckjlyxn4.js +231 -0
  35. package/dist/blockstate-eval-DDArZs1P.d.ts +107 -0
  36. package/dist/cli-D7_oUuPT.js +161 -0
  37. package/dist/cli.js +9 -7
  38. package/dist/{descriptor-DWebtkI1.js → descriptor-BVIoEpPO.js} +3 -3
  39. package/dist/{discovery-B9aqV_Rz.js → discovery-CsZu08re.js} +1 -1
  40. package/dist/dynamic/generators.js +1 -1
  41. package/dist/{entity-fallback-Cu22uEIK.js → entity-fallback-DNO0Ta9C.js} +3 -155
  42. package/dist/entity-textures-DFRIVdF1.js +209 -0
  43. package/dist/export-BIpqNU3H.d.ts +44 -0
  44. package/dist/export-DxREy3qA.js +701 -0
  45. package/dist/{face-cQ-pVHoe.d.ts → face-BKwkeTps.d.ts} +1 -1
  46. package/dist/{fluid-bucket-BzoLofB_.js → fluid-bucket-B-I4ZYHl.js} +1 -1
  47. package/dist/{generators-BlG4KmtP.js → generators-BCZVlWig.js} +1 -1
  48. package/dist/{geo-w9HHIrb5.js → geo-BguldlU-.js} +5 -5
  49. package/dist/{geometry-w0yQbzDZ.d.ts → geometry-Bkur58Vi.d.ts} +1 -1
  50. package/dist/index.d.ts +10 -5
  51. package/dist/index.js +21 -16
  52. package/dist/{item-styles-upgEO1yP.js → item-styles-DjYRdyHi.js} +1 -1
  53. package/dist/items/blockstate.js +1 -1
  54. package/dist/items/discovery.js +1 -1
  55. package/dist/{jar-D9z-X7tA.js → jar-5aLDI0nT.js} +2 -2
  56. package/dist/{legacy-reshape-C05SfAPR.js → legacy-reshape-CcdstKyI.js} +2 -2
  57. package/dist/{legacy-tints-B09J0Rxh.js → legacy-tints-l-541wgI.js} +1 -1
  58. package/dist/{loader-CWsTZgrk.js → loader-BvLcevlN.js} +100 -9
  59. package/dist/{loader-Lb0ZeILz.js → loader-C18GpurU.js} +1 -1
  60. package/dist/{loader-DD83d80u.d.ts → loader-C_1_amsq.d.ts} +18 -1
  61. package/dist/{locator-ycZzh_6z.js → locator-COMEtEn9.js} +23 -1
  62. package/dist/{manager-CkletR5K.js → manager-CYbAkWuT.js} +2 -2
  63. package/dist/models/loader.d.ts +1 -1
  64. package/dist/models/loader.js +1 -1
  65. package/dist/models/types.d.ts +1 -1
  66. package/dist/{models-BKxGkPS7.js → models-CQwcTZcg.js} +1 -1
  67. package/dist/mods/models.js +1 -1
  68. package/dist/mods/prepare.js +1 -1
  69. package/dist/mods/synthesize.js +1 -1
  70. package/dist/mods/tints.js +1 -1
  71. package/dist/{renderer-DB1Oe7xs.js → obj-BEjq3_Ao.js} +234 -234
  72. package/dist/obj-mesh-C6Sp4Ysc.d.ts +41 -0
  73. package/dist/obj-mesh-CiHiqrlm.js +97 -0
  74. package/dist/output/item-styles.js +1 -1
  75. package/dist/{pipeline-Bp6amYz_.d.ts → pipeline-BDvXcw20.d.ts} +1 -1
  76. package/dist/{pipeline-CgJaVpoL.js → pipeline-DRMsBiod.js} +14 -14
  77. package/dist/{prepare-D56Z-9cg.js → prepare-B8oPdGYz.js} +5 -5
  78. package/dist/{prepare-Cc8QZ3j0.js → prepare-C95vjt_o.js} +5 -5
  79. package/dist/{registry-DS5PZ57l.js → registry-DlduyjtM.js} +2 -2
  80. package/dist/render/entity-fallback.d.ts +3 -3
  81. package/dist/render/entity-fallback.js +1 -1
  82. package/dist/render/face.d.ts +1 -1
  83. package/dist/render/face.js +1 -1
  84. package/dist/render/fluid-bucket.js +1 -1
  85. package/dist/render/geo.d.ts +2 -2
  86. package/dist/render/geo.js +1 -1
  87. package/dist/render/geometry.d.ts +1 -1
  88. package/dist/render/legacy-tints.d.ts +1 -1
  89. package/dist/render/legacy-tints.js +1 -1
  90. package/dist/render/obj.d.ts +10 -3
  91. package/dist/render/obj.js +2 -2
  92. package/dist/render/pipeline.d.ts +1 -1
  93. package/dist/render/pipeline.js +1 -1
  94. package/dist/render/renderer.d.ts +1 -1
  95. package/dist/render/renderer.js +1 -1
  96. package/dist/render/tints.d.ts +1 -1
  97. package/dist/render/tints.js +1 -1
  98. package/dist/{renderer-C79EQDSn.d.ts → renderer-U20hnhbi.d.ts} +2 -2
  99. package/dist/resources/descriptor.js +1 -1
  100. package/dist/resources/entity-textures.d.ts +51 -0
  101. package/dist/resources/entity-textures.js +2 -0
  102. package/dist/resources/jar.js +1 -1
  103. package/dist/resources/locator.js +1 -1
  104. package/dist/resources/manager.js +1 -1
  105. package/dist/resources/synthetic.js +1 -1
  106. package/dist/{run-uq8_hUx9.d.ts → run-CvIqiZ6T.d.ts} +1 -1
  107. package/dist/{run-BPfpBZyZ.js → run-D2S_W5As.js} +10 -7
  108. package/dist/run.d.ts +1 -1
  109. package/dist/run.js +1 -1
  110. package/dist/{sources-Bxk-WOzH.js → sources-BlUriDCs.js} +1 -1
  111. package/dist/{synthesize-3Q0aaOnK.js → synthesize-jTjVjPAt.js} +2 -2
  112. package/dist/{synthetic-ZAUjXT7E.js → synthetic-rc9BPT4P.js} +0 -0
  113. package/dist/textures/loader.js +1 -1
  114. package/dist/tints-2k3ZhkY3.d.ts +41 -0
  115. package/dist/{tints-3VI_2SNy.js → tints-B3WQcPtx.js} +1 -1
  116. package/dist/{tints-Do9Sh3dg.d.ts → tints-DqhgFi8a.d.ts} +1 -1
  117. package/dist/tints-a9FWZLma.js +176 -0
  118. package/dist/{tints-CebmvjmP.js → tints-nxtGrqv5.js} +3 -3
  119. package/dist/{types-DpRSF9Vj.d.ts → types-qlp3I8_-.d.ts} +11 -0
  120. package/dist/versions/download.js +1 -1
  121. package/dist/versions/legacy-reshape.js +1 -1
  122. package/dist/versions/prepare.js +1 -1
  123. package/dist/workers/render-worker.d.ts +1 -1
  124. package/dist/workers/render-worker.js +2 -2
  125. package/package.json +1 -1
  126. package/dist/{download-D9aARBFp.js → download-1wAfrGKx.js} +1 -1
  127. package/dist/{face-CMJ3b3Ae.js → face-CKHboPfh.js} +1 -1
package/README.md CHANGED
@@ -58,12 +58,37 @@ icons/
58
58
  rc-<namespace>-failures.json # per-item failures with reasons, never silent
59
59
  ```
60
60
 
61
+ ### Block packs
62
+
63
+ A second output mode emits block **geometry and textures as data**, for a renderer that draws blocks itself rather than consuming finished icons. Java Edition, 1.13 (the Flattening) and up.
64
+
65
+ ```sh
66
+ rendermite blocks --version 1.21.8 --output ./blocks/1.21.8
67
+ rendermite blocks --version 1.20.4 --mod ./create-1.20.1.jar --output ./blocks/create
68
+ ```
69
+
70
+ ```
71
+ blocks/1.21.8/
72
+ atlas-0.png # stitched sprite page(s), 4px edge-extended padding
73
+ atlas.json # sprite id -> rect, render layer, animation frames
74
+ models.json # model id -> baked elements, OBJ meshes, stated render layer
75
+ blockstates.json # block id -> variants/multipart, keys and predicates pre-parsed
76
+ tints.json # plains tints, colormaps, ramps, per-block tint semantics
77
+ colormap/*.png # the version's own grass/foliage/dry_foliage maps
78
+ failures.json # anything not fully handled, with reasons, never silent
79
+ meta.json # version, counts, sha256 of every other file
80
+ ```
81
+
82
+ Everything is pre-resolved: no parent chains, no `#texture` references, no variant-key parsing at runtime.
83
+
84
+ Mods are first-class. Forge/NeoForge **OBJ geometry** exports as triangle meshes alongside box elements (Create's crushing wheels, Immersive Engineering's slopes and connectors, Mekanism's pipes), stated `render_type` beats inference, arbitrary element angles and a third rotation axis are carried through, and a mod's broken assets cost a magenta face rather than the whole block. Verified by exporting a pack per jar across a 3,000-mod corpus. See [docs/block-pack-export.md](docs/block-pack-export.md) for the full contract.
85
+
61
86
  ### As a library
62
87
 
63
- Everything the CLI does is exported, from the high-level `run()` down to individual pieces (`ModelLoader`, `TextureLoader`, `renderModel`, `prepareVersionResources`, `prepareModResources`, `generateStylesheet`).
88
+ Everything the CLI does is exported, from the high-level `run()` and `exportBlockPack()` down to individual pieces (`ModelLoader`, `TextureLoader`, `renderModel`, `prepareVersionResources`, `prepareModResources`, `generateStylesheet`, `evaluateBlockState`, `packAtlas`).
64
89
 
65
90
  ```ts
66
- import { run, prepareModResources, builtinPackPath } from '@nodecraft/rendermite';
91
+ import { run, exportBlockPack, prepareModResources, builtinPackPath } from '@nodecraft/rendermite';
67
92
  ```
68
93
 
69
94
  ## Performance
@@ -0,0 +1,225 @@
1
+ {
2
+ "credit": "Derived from renderchest:item/banner",
3
+ "texture_size": [
4
+ 64,
5
+ 64
6
+ ],
7
+ "elements": [
8
+ {
9
+ "name": "post",
10
+ "from": [
11
+ 7.3334,
12
+ 0,
13
+ 7.3334
14
+ ],
15
+ "to": [
16
+ 8.6666,
17
+ 27.998,
18
+ 8.6666
19
+ ],
20
+ "faces": {
21
+ "north": {
22
+ "uv": [
23
+ 12.5,
24
+ 0.5,
25
+ 13,
26
+ 11
27
+ ],
28
+ "texture": "#texture"
29
+ },
30
+ "east": {
31
+ "uv": [
32
+ 12,
33
+ 0.5,
34
+ 12.5,
35
+ 11
36
+ ],
37
+ "texture": "#texture"
38
+ },
39
+ "south": {
40
+ "uv": [
41
+ 11.5,
42
+ 0.5,
43
+ 12,
44
+ 11
45
+ ],
46
+ "texture": "#texture"
47
+ },
48
+ "west": {
49
+ "uv": [
50
+ 11,
51
+ 0.5,
52
+ 11.5,
53
+ 11
54
+ ],
55
+ "texture": "#texture"
56
+ },
57
+ "up": {
58
+ "uv": [
59
+ 11.5,
60
+ 0,
61
+ 12,
62
+ 0.5
63
+ ],
64
+ "texture": "#texture"
65
+ },
66
+ "down": {
67
+ "uv": [
68
+ 12,
69
+ 0,
70
+ 12.5,
71
+ 0.5
72
+ ],
73
+ "rotation": 180,
74
+ "texture": "#texture"
75
+ }
76
+ }
77
+ },
78
+ {
79
+ "name": "cloth",
80
+ "from": [
81
+ 1.334,
82
+ 2.6671999999999976,
83
+ 8.6666
84
+ ],
85
+ "to": [
86
+ 14.666,
87
+ 29.3312,
88
+ 9.3332
89
+ ],
90
+ "faces": {
91
+ "north": {
92
+ "uv": [
93
+ 5.5,
94
+ 0.25,
95
+ 10.5,
96
+ 10.25
97
+ ],
98
+ "tintindex": 0,
99
+ "texture": "#texture"
100
+ },
101
+ "east": {
102
+ "uv": [
103
+ 5.25,
104
+ 0.25,
105
+ 5.5,
106
+ 10.25
107
+ ],
108
+ "tintindex": 0,
109
+ "texture": "#texture"
110
+ },
111
+ "south": {
112
+ "uv": [
113
+ 0.25,
114
+ 0.25,
115
+ 5.25,
116
+ 10.25
117
+ ],
118
+ "tintindex": 0,
119
+ "texture": "#texture"
120
+ },
121
+ "west": {
122
+ "uv": [
123
+ 0,
124
+ 0.25,
125
+ 0.25,
126
+ 10.25
127
+ ],
128
+ "tintindex": 0,
129
+ "texture": "#texture"
130
+ },
131
+ "up": {
132
+ "uv": [
133
+ 0.25,
134
+ 0,
135
+ 5.25,
136
+ 0.25
137
+ ],
138
+ "tintindex": 0,
139
+ "texture": "#texture"
140
+ },
141
+ "down": {
142
+ "uv": [
143
+ 5.25,
144
+ 0,
145
+ 10.25,
146
+ 0.25
147
+ ],
148
+ "rotation": 180,
149
+ "tintindex": 0,
150
+ "texture": "#texture"
151
+ }
152
+ }
153
+ },
154
+ {
155
+ "name": "bar",
156
+ "from": [
157
+ 1.334,
158
+ 28,
159
+ 7.3334
160
+ ],
161
+ "to": [
162
+ 14.666,
163
+ 29.3312,
164
+ 8.6666
165
+ ],
166
+ "faces": {
167
+ "north": {
168
+ "uv": [
169
+ 6,
170
+ 11,
171
+ 11,
172
+ 11.5
173
+ ],
174
+ "texture": "#texture"
175
+ },
176
+ "east": {
177
+ "uv": [
178
+ 5.5,
179
+ 11,
180
+ 6,
181
+ 11.5
182
+ ],
183
+ "texture": "#texture"
184
+ },
185
+ "south": {
186
+ "uv": [
187
+ 0.5,
188
+ 11,
189
+ 5.5,
190
+ 11.5
191
+ ],
192
+ "texture": "#texture"
193
+ },
194
+ "west": {
195
+ "uv": [
196
+ 0,
197
+ 11,
198
+ 0.5,
199
+ 11.5
200
+ ],
201
+ "texture": "#texture"
202
+ },
203
+ "up": {
204
+ "uv": [
205
+ 0.5,
206
+ 10.5,
207
+ 5.5,
208
+ 11
209
+ ],
210
+ "texture": "#texture"
211
+ },
212
+ "down": {
213
+ "uv": [
214
+ 5.5,
215
+ 10.5,
216
+ 10.5,
217
+ 11
218
+ ],
219
+ "rotation": 180,
220
+ "texture": "#texture"
221
+ }
222
+ }
223
+ }
224
+ ]
225
+ }
@@ -0,0 +1,155 @@
1
+ {
2
+ "credit": "Derived from renderchest:item/banner",
3
+ "texture_size": [
4
+ 64,
5
+ 64
6
+ ],
7
+ "elements": [
8
+ {
9
+ "name": "cloth",
10
+ "from": [
11
+ 1.334,
12
+ -10.664000000000001,
13
+ 1.3332
14
+ ],
15
+ "to": [
16
+ 14.666,
17
+ 16,
18
+ 2
19
+ ],
20
+ "faces": {
21
+ "north": {
22
+ "uv": [
23
+ 5.5,
24
+ 0.25,
25
+ 10.5,
26
+ 10.25
27
+ ],
28
+ "tintindex": 0,
29
+ "texture": "#texture"
30
+ },
31
+ "east": {
32
+ "uv": [
33
+ 5.25,
34
+ 0.25,
35
+ 5.5,
36
+ 10.25
37
+ ],
38
+ "tintindex": 0,
39
+ "texture": "#texture"
40
+ },
41
+ "south": {
42
+ "uv": [
43
+ 0.25,
44
+ 0.25,
45
+ 5.25,
46
+ 10.25
47
+ ],
48
+ "tintindex": 0,
49
+ "texture": "#texture"
50
+ },
51
+ "west": {
52
+ "uv": [
53
+ 0,
54
+ 0.25,
55
+ 0.25,
56
+ 10.25
57
+ ],
58
+ "tintindex": 0,
59
+ "texture": "#texture"
60
+ },
61
+ "up": {
62
+ "uv": [
63
+ 0.25,
64
+ 0,
65
+ 5.25,
66
+ 0.25
67
+ ],
68
+ "tintindex": 0,
69
+ "texture": "#texture"
70
+ },
71
+ "down": {
72
+ "uv": [
73
+ 5.25,
74
+ 0,
75
+ 10.25,
76
+ 0.25
77
+ ],
78
+ "rotation": 180,
79
+ "tintindex": 0,
80
+ "texture": "#texture"
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "name": "bar",
86
+ "from": [
87
+ 1.334,
88
+ 14.668800000000001,
89
+ 0
90
+ ],
91
+ "to": [
92
+ 14.666,
93
+ 16,
94
+ 1.3332
95
+ ],
96
+ "faces": {
97
+ "north": {
98
+ "uv": [
99
+ 6,
100
+ 11,
101
+ 11,
102
+ 11.5
103
+ ],
104
+ "texture": "#texture"
105
+ },
106
+ "east": {
107
+ "uv": [
108
+ 5.5,
109
+ 11,
110
+ 6,
111
+ 11.5
112
+ ],
113
+ "texture": "#texture"
114
+ },
115
+ "south": {
116
+ "uv": [
117
+ 0.5,
118
+ 11,
119
+ 5.5,
120
+ 11.5
121
+ ],
122
+ "texture": "#texture"
123
+ },
124
+ "west": {
125
+ "uv": [
126
+ 0,
127
+ 11,
128
+ 0.5,
129
+ 11.5
130
+ ],
131
+ "texture": "#texture"
132
+ },
133
+ "up": {
134
+ "uv": [
135
+ 0.5,
136
+ 10.5,
137
+ 5.5,
138
+ 11
139
+ ],
140
+ "texture": "#texture"
141
+ },
142
+ "down": {
143
+ "uv": [
144
+ 5.5,
145
+ 10.5,
146
+ 10.5,
147
+ 11
148
+ ],
149
+ "rotation": 180,
150
+ "texture": "#texture"
151
+ }
152
+ }
153
+ }
154
+ ]
155
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "__comment": "The foot half of a bed, as one block. Same slab as the head from the sheet's second box (texOffs 0,22), with its outer end and legs to the south so one `facing` rotation orients both halves.",
3
+ "texture_size": [64, 64],
4
+ "elements": [
5
+ {
6
+ "name": "slab",
7
+ "from": [0, 3, 0],
8
+ "to": [16, 9, 16],
9
+ "faces": {
10
+ "up": { "uv": [1.5, 7, 5.5, 11], "texture": "#texture" },
11
+ "down": { "uv": [7, 7, 11, 11], "texture": "#texture" },
12
+ "south": { "uv": [5.5, 5.5, 9.5, 7], "texture": "#texture" },
13
+ "west": { "uv": [0, 7, 1.5, 11], "texture": "#texture" },
14
+ "east": { "uv": [5.5, 7, 7, 11], "texture": "#texture" }
15
+ }
16
+ },
17
+ {
18
+ "name": "leg_west",
19
+ "from": [0, 0, 13],
20
+ "to": [3, 3, 16],
21
+ "faces": {
22
+ "up": { "uv": [13.25, 3, 14, 3.75], "texture": "#texture" },
23
+ "down": { "uv": [14, 3, 14.75, 3.75], "texture": "#texture" },
24
+ "north": { "uv": [13.25, 3.75, 14, 4.5], "texture": "#texture" },
25
+ "south": { "uv": [14.75, 3.75, 15.5, 4.5], "texture": "#texture" },
26
+ "west": { "uv": [12.5, 3.75, 13.25, 4.5], "texture": "#texture" },
27
+ "east": { "uv": [14, 3.75, 14.75, 4.5], "texture": "#texture" }
28
+ }
29
+ },
30
+ {
31
+ "name": "leg_east",
32
+ "from": [13, 0, 13],
33
+ "to": [16, 3, 16],
34
+ "faces": {
35
+ "up": { "uv": [13.25, 4.5, 14, 5.25], "texture": "#texture" },
36
+ "down": { "uv": [14, 4.5, 14.75, 5.25], "texture": "#texture" },
37
+ "north": { "uv": [13.25, 5.25, 14, 6], "texture": "#texture" },
38
+ "south": { "uv": [14.75, 5.25, 15.5, 6], "texture": "#texture" },
39
+ "west": { "uv": [12.5, 5.25, 13.25, 6], "texture": "#texture" },
40
+ "east": { "uv": [14, 5.25, 14.75, 6], "texture": "#texture" }
41
+ }
42
+ }
43
+ ]
44
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "__comment": "The head half of a bed, as one block. Vanilla ships no model: BedRenderer draws both halves from an entity model spanning two block positions. Proportions and UVs follow that model (a 16x16x6 slab plus 3x3x3 legs on the outer end) read off the 64x64 sheet's own box unwrap. Authored with the outer end to the north, so `facing` rotates it.",
3
+ "texture_size": [64, 64],
4
+ "elements": [
5
+ {
6
+ "name": "slab",
7
+ "from": [0, 3, 0],
8
+ "to": [16, 9, 16],
9
+ "faces": {
10
+ "up": { "uv": [1.5, 1.5, 5.5, 5.5], "texture": "#texture" },
11
+ "down": { "uv": [7, 1.5, 11, 5.5], "texture": "#texture" },
12
+ "north": { "uv": [1.5, 0, 5.5, 1.5], "texture": "#texture" },
13
+ "west": { "uv": [0, 1.5, 1.5, 5.5], "texture": "#texture" },
14
+ "east": { "uv": [5.5, 1.5, 7, 5.5], "texture": "#texture" }
15
+ }
16
+ },
17
+ {
18
+ "name": "leg_west",
19
+ "from": [0, 0, 0],
20
+ "to": [3, 3, 3],
21
+ "faces": {
22
+ "up": { "uv": [13.25, 0, 14, 0.75], "texture": "#texture" },
23
+ "down": { "uv": [14, 0, 14.75, 0.75], "texture": "#texture" },
24
+ "north": { "uv": [13.25, 0.75, 14, 1.5], "texture": "#texture" },
25
+ "south": { "uv": [14.75, 0.75, 15.5, 1.5], "texture": "#texture" },
26
+ "west": { "uv": [12.5, 0.75, 13.25, 1.5], "texture": "#texture" },
27
+ "east": { "uv": [14, 0.75, 14.75, 1.5], "texture": "#texture" }
28
+ }
29
+ },
30
+ {
31
+ "name": "leg_east",
32
+ "from": [13, 0, 0],
33
+ "to": [16, 3, 3],
34
+ "faces": {
35
+ "up": { "uv": [13.25, 1.5, 14, 2.25], "texture": "#texture" },
36
+ "down": { "uv": [14, 1.5, 14.75, 2.25], "texture": "#texture" },
37
+ "north": { "uv": [13.25, 2.25, 14, 3], "texture": "#texture" },
38
+ "south": { "uv": [14.75, 2.25, 15.5, 3], "texture": "#texture" },
39
+ "west": { "uv": [12.5, 2.25, 13.25, 3], "texture": "#texture" },
40
+ "east": { "uv": [14, 2.25, 14.75, 3], "texture": "#texture" }
41
+ }
42
+ }
43
+ ]
44
+ }
@@ -0,0 +1,182 @@
1
+ {
2
+ "credit": "Derived from the vanilla double chest sheet unwrap",
3
+ "texture_size": [
4
+ 64,
5
+ 64
6
+ ],
7
+ "elements": [
8
+ {
9
+ "name": "bottom",
10
+ "from": [
11
+ 0,
12
+ 0,
13
+ 1
14
+ ],
15
+ "to": [
16
+ 15,
17
+ 10,
18
+ 15
19
+ ],
20
+ "faces": {
21
+ "north": {
22
+ "uv": [
23
+ 3.5,
24
+ 8.25,
25
+ 7.25,
26
+ 10.75
27
+ ],
28
+ "rotation": 180,
29
+ "texture": "#texture"
30
+ },
31
+ "east": {
32
+ "uv": [
33
+ 7.25,
34
+ 8.25,
35
+ 10.75,
36
+ 10.75
37
+ ],
38
+ "rotation": 180,
39
+ "texture": "#texture"
40
+ },
41
+ "south": {
42
+ "uv": [
43
+ 10.75,
44
+ 8.25,
45
+ 14.5,
46
+ 10.75
47
+ ],
48
+ "rotation": 180,
49
+ "texture": "#texture"
50
+ },
51
+ "down": {
52
+ "uv": [
53
+ 3.5,
54
+ 4.75,
55
+ 7.25,
56
+ 8.25
57
+ ],
58
+ "texture": "#texture"
59
+ }
60
+ }
61
+ },
62
+ {
63
+ "name": "top",
64
+ "from": [
65
+ 0,
66
+ 10,
67
+ 1
68
+ ],
69
+ "to": [
70
+ 15,
71
+ 14,
72
+ 15
73
+ ],
74
+ "faces": {
75
+ "north": {
76
+ "uv": [
77
+ 3.5,
78
+ 3.75,
79
+ 7.25,
80
+ 4.75
81
+ ],
82
+ "rotation": 180,
83
+ "texture": "#texture"
84
+ },
85
+ "east": {
86
+ "uv": [
87
+ 7.25,
88
+ 3.75,
89
+ 10.75,
90
+ 4.75
91
+ ],
92
+ "rotation": 180,
93
+ "texture": "#texture"
94
+ },
95
+ "south": {
96
+ "uv": [
97
+ 10.75,
98
+ 3.75,
99
+ 14.5,
100
+ 4.75
101
+ ],
102
+ "rotation": 180,
103
+ "texture": "#texture"
104
+ },
105
+ "up": {
106
+ "uv": [
107
+ 11,
108
+ 0,
109
+ 7.25,
110
+ 3.5
111
+ ],
112
+ "rotation": 180,
113
+ "texture": "#texture"
114
+ }
115
+ }
116
+ },
117
+ {
118
+ "name": "lock",
119
+ "from": [
120
+ 0,
121
+ 7,
122
+ 15
123
+ ],
124
+ "to": [
125
+ 1,
126
+ 11,
127
+ 16
128
+ ],
129
+ "faces": {
130
+ "north": {
131
+ "uv": [
132
+ 0.25,
133
+ 0.25,
134
+ 0.5,
135
+ 1.25
136
+ ],
137
+ "rotation": 180,
138
+ "texture": "#texture"
139
+ },
140
+ "east": {
141
+ "uv": [
142
+ 0.5,
143
+ 0.25,
144
+ 0.75,
145
+ 1.25
146
+ ],
147
+ "rotation": 180,
148
+ "texture": "#texture"
149
+ },
150
+ "south": {
151
+ "uv": [
152
+ 0.75,
153
+ 0.25,
154
+ 1,
155
+ 1.25
156
+ ],
157
+ "rotation": 180,
158
+ "texture": "#texture"
159
+ },
160
+ "up": {
161
+ "uv": [
162
+ 0.75,
163
+ 0,
164
+ 0.5,
165
+ 0.25
166
+ ],
167
+ "rotation": 180,
168
+ "texture": "#texture"
169
+ },
170
+ "down": {
171
+ "uv": [
172
+ 0.25,
173
+ 0,
174
+ 0.5,
175
+ 0.25
176
+ ],
177
+ "texture": "#texture"
178
+ }
179
+ }
180
+ }
181
+ ]
182
+ }