Skip to content

Commit 8491c2d

Browse files
committed
move data, add array packing
1 parent 73e07c1 commit 8491c2d

File tree

1 file changed

+42
-7
lines changed

1 file changed

+42
-7
lines changed

src/exporting.ts

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,15 @@ interface PredicateModel {
198198
layer0: string
199199
}
200200
overrides: Override[]
201-
ajMeta: Record<string, (number | [number, number])[]>
201+
aj: {
202+
includedRigs: Record<
203+
string,
204+
{
205+
usedIDs: (number | [number, number])[]
206+
name: string
207+
}
208+
>
209+
}
202210
}
203211

204212
let predicateIDMap = {}
@@ -217,7 +225,9 @@ async function exportPredicate(
217225
layer0: `item/${ajSettings.rigItem.replace('minecraft:', '')}`,
218226
},
219227
overrides: [],
220-
ajMeta: {},
228+
aj: {
229+
includedRigs: {},
230+
},
221231
}
222232
let usedIDs = []
223233
function* idGen() {
@@ -235,8 +245,9 @@ async function exportPredicate(
235245
)
236246
console.log(oldPredicate)
237247
// @ts-ignore
238-
const data = oldPredicate?.ajMeta || {}
239-
Object.entries(data).forEach(([id, ids]) => {
248+
const data = oldPredicate?.aj?.includedRigs || {}
249+
Object.entries(data).forEach(([id, dat]) => {
250+
let ids = dat.usedIDs
240251
// @ts-ignore
241252
if (id !== Project.UUID) {
242253
for (let i = 0; i < ids.length; i++) {
@@ -252,7 +263,7 @@ async function exportPredicate(
252263
})
253264
// @ts-ignore
254265
delete data[Project.UUID]
255-
predicateJSON.ajMeta = data
266+
predicateJSON.aj.includedRigs = data
256267
predicateJSON.overrides = oldPredicate.overrides.filter((override) => {
257268
return usedIDs.includes(override.predicate.custom_model_data)
258269
})
@@ -288,15 +299,39 @@ async function exportPredicate(
288299
),
289300
})
290301
}
302+
291303
//@ts-ignore
292-
predicateJSON.ajMeta[Project.UUID] = myMeta
304+
predicateJSON.aj.includedRigs[Project.UUID] = {
305+
name: settings.animatedJava.projectName,
306+
usedIDs: packArr(myMeta),
307+
}
293308
Blockbench.writeFile(ajSettings.predicateFilePath, {
294309
content: autoStringify(predicateJSON),
295310
custom_writer: null,
296311
})
297312
console.groupEnd()
298313
}
299-
314+
function packArr(arr) {
315+
//take an array of numbers and return an array of ranges of consecutive numbers and if a number is not consecutive it is put in its the resulting array
316+
let result = []
317+
let currentRange = [arr[0]]
318+
for (let i = 1; i < arr.length; i++) {
319+
if (arr[i] - arr[i - 1] === 1) {
320+
currentRange.push(arr[i])
321+
} else {
322+
result.push(currentRange)
323+
currentRange = [arr[i]]
324+
}
325+
}
326+
result.push(currentRange)
327+
return result.map((range) => {
328+
if (range.length === 1) {
329+
return range[0]
330+
} else {
331+
return [range[0], range[range.length - 1]]
332+
}
333+
})
334+
}
300335
async function exportTransparentTexture() {
301336
console.log(transparent)
302337
Blockbench.writeFile(settings.animatedJava.transparentTexturePath, {

0 commit comments

Comments
 (0)