@@ -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
204212let 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+ }
300335async function exportTransparentTexture ( ) {
301336 console . log ( transparent )
302337 Blockbench . writeFile ( settings . animatedJava . transparentTexturePath , {
0 commit comments